mailtrain/client/static/mosaico/mosaico.min.js.map
Tomas Bures 63765f7222 Client's public folder renamed to static
Regular campaign sender seems to have most of the code in place. (Not tested.)
2018-09-18 10:30:13 +02:00

147 lines
No EOL
586 KiB
Text

{
"version": 3,
"sources": [
"node_modules/browser-pack/_prelude.js",
"build/templates.js",
"node_modules/assert/assert.js",
"node_modules/console-browserify/index.js",
"node_modules/date-now/index.js",
"node_modules/evol.colorpicker/js/evol.colorpicker.min.js",
"node_modules/jsep/build/jsep.js",
"node_modules/juice/lib/inline.js",
"node_modules/juice/lib/property.js",
"node_modules/juice/lib/selector.js",
"node_modules/juice/lib/utils.js",
"node_modules/knockout-sortable/build/knockout-sortable.js",
"node_modules/ko-reactor/dist/ko-reactor.min.js",
"node_modules/mensch/index.js",
"node_modules/mensch/lib/debug.js",
"node_modules/mensch/lib/lexer.js",
"node_modules/mensch/lib/parser.js",
"node_modules/mensch/lib/stringify.js",
"node_modules/process/browser.js",
"node_modules/slick/parser.js",
"node_modules/tinycolor2/tinycolor.js",
"node_modules/toastr/toastr.js",
"node_modules/util/node_modules/inherits/inherits_browser.js",
"node_modules/util/support/isBufferBrowser.js",
"node_modules/util/util.js",
"src/js/app.js",
"src/js/bindings/bind-iframe.js",
"src/js/bindings/blocks.js",
"src/js/bindings/choose-template.js",
"src/js/bindings/colorpicker.js",
"src/js/bindings/csstext.js",
"src/js/bindings/droppable.js",
"src/js/bindings/eventable.js",
"src/js/bindings/extender-pagination.js",
"src/js/bindings/extsortables.js",
"src/js/bindings/fileupload.js",
"src/js/bindings/if-subs.js",
"src/js/bindings/jqueryui-spinner.js",
"src/js/bindings/jqueryui-tabs.js",
"src/js/bindings/script-template.js",
"src/js/bindings/scrollfix.js",
"src/js/bindings/scrollintoview.js",
"src/js/bindings/string-template.js",
"src/js/bindings/tooltips.js",
"src/js/bindings/validated-value.js",
"src/js/bindings/virtuals.js",
"src/js/bindings/wysiwygs.js",
"src/js/converter/checkmodel.js",
"src/js/converter/declarations.js",
"src/js/converter/domutils.js",
"src/js/converter/editor.js",
"src/js/converter/main.js",
"src/js/converter/model.js",
"src/js/converter/parser.js",
"src/js/converter/stylesheet.js",
"src/js/converter/utils.js",
"src/js/converter/wrapper.js",
"src/js/ext/color.js",
"src/js/ext/inliner.js",
"src/js/ext/localstorage.js",
"src/js/ext/util.js",
"src/js/ko-bindings.js",
"src/js/template-loader.js",
"src/js/timed-call.js",
"src/js/undomanager/undomain.js",
"src/js/undomanager/undomanager.js",
"src/js/undomanager/undoserializer.js",
"src/js/viewmodel.js"
],
"names": [],
"mappings": "AAAA;ACAA;AACA;AACA;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC1eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzqBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC1bA;AACA;AACA;AACA;;;;ACHA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACprBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3qCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC5dA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AC1kBA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;ACFA;AACA;AACA;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;ACFA;AACA;AACA;ACFA;AACA;AACA;;ACFA;AACA;AACA;;;ACFA;AACA;AACA;ACFA;AACA;AACA;ACFA;AACA;AACA;;ACFA;AACA;AACA;;;ACFA;AACA;AACA;ACFA;AACA;AACA;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;ACFA;AACA;AACA;;ACFA;AACA;AACA;;;ACFA;AACA;AACA;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA;;;;ACFA;AACA;AACA",
"file": "generated.js",
"sourceRoot": "",
"sourcesContent": [
"(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})",
"var templateSystem=require(\"../src/js/bindings/choose-template.js\");document.addEventListener(\"DOMContentLoaded\",function(e){templateSystem.addTemplate(\"array\",\"\\x3c!-- ko foreach: $data --\\x3e\\x3c!-- ko block: $data --\\x3e\\x3c!-- /ko --\\x3e\\x3c!-- /ko --\\x3e\"),templateSystem.addTemplate(\"block-show\",\"\\x3c!-- ko block: $data, scrollIntoView: $root.selectedBlock() === $data --\\x3e\\x3c!-- /ko --\\x3e\"),templateSystem.addTemplate(\"block-wysiwyg\",'<div class=\"editable block\" data-drop-content=\"Drop here\" data-bind=\"attr: { \\'data-drop-content\\': $root.t(\\'Drop here\\') }, click: function(obj, evt) { $root.selectBlock(obj); return true }, clickBubble: false, css: { selected: $root.selectedBlock() === $data }, scrollIntoView: $root.selectedBlock() === $data\"> <div class=\"mo-blockselectionhelper\"></div> <div class=\"tools\" data-bind=\"tooltips: {}\"> \\x3c!-- ko if: typeof $index != \\'undefined\\' --\\x3e <div title=\"Drag this handle to move the block\" data-bind=\"attr: { title: $root.t(\\'Drag this handle to move the block\\') }\" class=\"tool handle\"><i class=\"fa fa-fw fa-sort\"></i></div> \\x3c!-- ko if: $index() > 0 --\\x3e <div title=\"Move this block upside\" data-bind=\"attr: { title: $root.t(\\'Move this block upside\\') }\" class=\"tool moveup\"><i class=\"fa fa-fw fa-sort-asc\" data-bind=\\'click: $root.moveBlock.bind($element, $index, $parent, true)\\'></i></div> \\x3c!-- /ko --\\x3e \\x3c!-- ko if: $index() < $parent.blocks().length -1 --\\x3e <div title=\"Move this block downside\" data-bind=\"attr: { title: $root.t(\\'Move this block downside\\') }\" class=\"tool movedown\"><i class=\"fa fa-fw fa-sort-desc\" data-bind=\\'click: $root.moveBlock.bind($element, $index, $parent, false)\\'></i></div> \\x3c!-- /ko --\\x3e <div title=\"Delete block\" class=\"tool delete\" data-bind=\"attr: { title: $root.t(\\'Delete block\\') }, click: $root.removeBlock.bind($element, $rawData, $parent)\"><i class=\"fa fa-fw fa-trash-o\"></i></div> <div title=\"Duplicate block\" class=\"tool clone\" data-bind=\"attr: { title: $root.t(\\'Duplicate block\\') }, click: $root.duplicateBlock.bind($element, $index, $parent)\"><i class=\"fa fa-fw fa-files-o\"></i></div> \\x3c!-- /ko --\\x3e \\x3c!-- ko if: typeof $data._nextVariant != \\'undefined\\' --\\x3e<div title=\"Switch block variant\" class=\"tool variant\" data-bind=\"attr: { title: $root.t(\\'Switch block variant\\') }, click: $data._nextVariant\"><i class=\"fa fa-fw fa-magic\"></i></div>\\x3c!-- /ko --\\x3e </div> \\x3c!-- ko block: $data --\\x3e\\x3c!-- /ko --\\x3e</div>'),templateSystem.addTemplate(\"blocks-show\",\"\\x3c!-- ko template: { name: 'block-show', foreach: blocks } --\\x3e\\x3c!-- /ko --\\x3e\"),templateSystem.addTemplate(\"blocks-wysiwyg\",\"<div class=\\\"sortable-blocks-edit\\\" data-drop-content=\\\"Drop here\\\" data-empty-content=\\\"Drop here blocks from the Blocks tab\\\" data-bind=\\\"attr: { 'data-drop-content': $root.t('Drop here'), 'data-empty-content': $root.t('Drop here blocks from the &quot;Blocks&quot; tab') }, css: { 'empty': ko.utils.unwrapObservable(blocks).length == 0 }, extsortable: { connectClass: 'sortable-blocks-edit', template: 'block-wysiwyg', data: blocks, dragging: $root.dragging, beforeMove: $root.startMultiple, afterMove: $root.stopMultiple, options: { handle: '.handle', placeholder: $root.placeholderHelper } }\\\"></div>\"),templateSystem.addTemplate(\"customstyle\",'<div class=\"customStyleHelp\" data-bind=\"html: $root.t(\\'Customized block.<ul><li>In this status changes to properties will be specific to the current block (instead of being global to all blocks in the same section)</li><li>A <span class=&quot;customStyled&quot;><span>&quot;small cube&quot; </span></span> icon beside the property will mark the customization. By clicking this icon the property value will be reverted to the value defined for the section.</li></ul>\\')\">Customized block.<ul><li>In this status changes to properties will be specific to the current block (instead of being global to all blocks in the same section)</li><li>A <span class=\"customStyled\"><span>\"small cube\" </span></span> icon beside the property will mark the customization. By clicking this icon the property value will be reverted to the value defined for the section.</li></ul></div>'),templateSystem.addTemplate(\"empty\",\"\"),templateSystem.addTemplate(\"error\",'[<div style=\"background-color: #fff0f0\" data-bind=\"text: ko.toJS($data)\"></div>]'),templateSystem.addTemplate(\"gallery-images\",'<div data-bind=\"foreach: items.currentPageData\"> <div class=\"draggable-item\" data-bind=\"if: typeof thumbnailUrl != \\'undefined\\'\"> <div class=\"draggable image\" data-bind=\"click: $root.addImage, extdraggable: { data: $data, dropContainer: \\'#main-wysiwyg-area\\', dragging: $root.draggingImage, \\'options\\': { \\'appendTo\\': \\'#page\\' } }, style: { backgroundImage: \\'url(\\\\\\'\\' + thumbnailUrl + \\'\\\\\\')\\' }\"> <img title=\"Drag this image and drop it on any template image placeholder\" style=\"display: block;\" data-bind=\"tooltips: {}, attr: { src: thumbnailUrl, \\'title\\': $root.t(\\'Drag this image and drop it on any template image placeholder\\') }\"/> </div> </div></div>\\x3c!-- ko if: items.pageCount() > 1 --\\x3e<div class=\"galleryPager\" data-bind=\"buttonset: {}\"> <a href=\"javascript:void(0)\" data-bind=\"click: items.moveFirst, button: { disabled: items.currentPage() == 1, icons: { primary: \\'fa fa-fast-backward\\' }, text: false }\">First</a> <a href=\"javascript:void(0)\" data-bind=\"click: items.movePrevious, button: { disabled: items.currentPage() == 1, icons: { primary: \\'fa fa-backward\\' }, text: false }\">Previous</a> <span data-bind=\"button: { disabled: true, text: true, label: \\' \\'+items.currentPage()+\\' di \\'+items.pageCount()+\\' \\' }\"> X di Y </span> <a href=\"javascript:void(0)\" data-bind=\"click: items.moveNext, button: { disabled: items.currentPage() == items.pageCount(), icons: { primary: \\'fa fa-forward\\' }, text: false }\">Next</a> <a href=\"javascript:void(0)\" data-bind=\"click: items.moveLast, button: { disabled: items.currentPage() == items.pageCount(), icons: { primary: \\'fa fa-fast-forward\\' }, text: false }\">Last</a></div>\\x3c!-- /ko --\\x3e'),templateSystem.addTemplate(\"img-wysiwyg\",'<table tabfocus=\"0\" cellspacing=\"0\" cellpadding=\"0\" data-drop-content=\"Drop here\" data-bind=\"style: _stylebind, click: function(obj, evt) { $root.selectItem(_item, _data); return true; }, clickBubble: false, fudroppable: { activeClass: \\'ui-state-highlight\\', hoverClass: \\'ui-state-draghover\\' }, droppable: { options: { accept: \\'.image\\', activeClass: \\'ui-state-highlight\\', hoverClass: \\'ui-state-draghover\\' }, data: _src, dragged: $root.fileToImage }, css: { selecteditem: $root.isSelectedItem(_item) }, scrollIntoView: $root.isSelectedItem(_item), attr: { \\'data-drop-content\\': $root.t(\\'Drop here\\'), width: _width, height: _height, align: _align }\" class=\"img-wysiwyg selectable-img\" style=\"display: table;\"><tr><td class=\"uploadzone\"> <div class=\"mo-imgselectionhelper\"></div> <div class=\"mo-uploadzone\"></div> <div class=\"img-size\" data-bind=\"text: _size\">size</div> <div class=\"midtools\" data-bind=\"tooltips: {}\"> \\x3c!-- ko if: _src() != \\'\\' --\\x3e <div title=\"Remove image\" class=\"tool delete\" data-bind=\"attr: { title: $root.t(\\'Remove image\\') }, click: _src.bind(_src, \\'\\'), clickBubble: false\"><i class=\"fa fa-fw fa-trash-o\"></i></div> \\x3c!-- ko if: typeof $root.editImage !== \\'undefined\\' --\\x3e <div title=\"Open the image editing tool\" class=\"tool edit\" data-bind=\"attr: { title: $root.t(\\'Open the image editing tool\\') }, click: $root.editImage.bind($element, _src), clickBubble: false\"><i class=\"fa fa-fw fa-pencil\"></i></div> \\x3c!-- /ko --\\x3e \\x3c!-- /ko --\\x3e \\x3c!-- ko if: _src() == \\'\\' --\\x3e <div title=\"Upload a new image\" data-bind=\"attr: { title: $root.t(\\'Upload a new image\\') }\" class=\"tool upload\" style=\"position: relative; overflow: hidden;\"><i class=\"fa fa-fw fa-upload\"></i> <input class=\"fileupload nofile\" type=\"file\" name=\"files[]\" data-bind=\"fileupload: { data: _src, onerror: $root.notifier.error, onfile: $root.loadImage, canvasPreview: true }\" style=\"z-index: 20; position: absolute; top: 0; left: 0; right: 0; bottom: 0; min-width: 100%; min-height: 100%; font-size: 999px; text-align: right; filter: alpha(opacity=0); opacity: 0; outline: none; cursor: inherit; display: block\"> </div> \\x3c!-- /ko --\\x3e </div> \\x3c!-- ko template: _template --\\x3e\\x3c!-- /ko --\\x3e \\x3c!-- ko if: _src() == \\'\\' --\\x3e \\x3c!-- <img style=\"display: block;\" class=\"imgplaceholder\" width=\"200\" src=\"\" alt=\"Insert an image here\" data-bind=\"wysiwygSrc: { src: _src.preloaded, placeholder: _placeholdersrc, width: _width, height: _height, method: _method }\" /> --\\x3e <span class=\"fileuploadtext\" style=\"text-align: center; display: -ms-flexbox; display: flex; align-items: center; flex-align: center; justify-content: center; padding: 1em; position: absolute; top: 0; left: 0; right: 0; bottom: 0;\"><span class=\"textMiddle\" style=\" text-shadow: 1px 1px 0 #FFFFFF, 0 0 10px #FFFFFF; font-weight: bold;\" data-bind=\"text: $root.t(\\'Drop an image here\\')\">Drop an image here</span></span> \\x3c!-- /ko --\\x3e \\x3c!-- ko if: _src() != \\'\\' --\\x3e \\x3c!-- <img style=\"display: block;\" width=\"200\" src=\"\" data-bind=\"preloader: _src, wysiwygSrc: { src: _src.preloaded, placeholder: _placeholdersrc, width: _width, height: _height, method: _method }\" /> --\\x3e \\x3c!-- /ko --\\x3e \\x3c!-- pulsante per la cancellazione --\\x3e <div title=\"Drop an image here or click the upload button\" data-bind=\"attr: { title: $root.t(\\'Drop an image here or click the upload button\\') }, tooltips: {}\" class=\"workzone\" style=\"position: absolute; top: 0; left: 0; right: 0; bottom: 0; overflow: hidden;\"> \\x3c!-- ko if: _src.preloaded && _src() != _src.preloaded() --\\x3ePRELOADING....\\x3c!-- /ko --\\x3e \\x3c!-- ko if: _src() != \\'\\' --\\x3e <input class=\"fileupload withfile\" type=\"file\" name=\"files[]\" data-bind=\"fileupload: { data: _src, onerror: $root.notifier.error, onfile: $root.galleryRecent.unshift.bind($root.galleryRecent), canvasPreview: true }\" style=\"z-index: -20; position: absolute; top: 0; left: 0; right: 0; bottom: 0; min-width: 100%; min-height: 100%; font-zie: 999px; text-align: right; filter: alpha(opacity=0); opacity: 0; outline: none; cursor: inherit; display: block\"> \\x3c!-- /ko --\\x3e <div class=\"progress\" style=\"opacity: .5; width: 80%; margin-left: 10%; position: absolute; bottom: 30%; height: 20px; border: 2px solid black;\"> <div class=\"progress-bar progress-bar-success\" style=\"height: 20px; background-color: black; \"></div> </div> </div></table>'),templateSystem.addTemplate(\"main\",'<div id=\"page\" style=\"display: none;\" data-bind=\"visible: true, css: { withToolbox: $root.showToolbox, withPreviewFrame: showPreviewFrame }\"> <div id=\"main-edit-area\" data-bind=\"click: function(obj, evt) { $root.selectBlock(null); return true; }, clickBubble: false\"> \\x3c!-- ko withProperties: { templateMode: \\'wysiwyg\\', templateModeFallback: \\'show\\' } --\\x3e <div id=\"main-wysiwyg-area\" data-bind=\"wysiwygScrollfix: true, scrollable: true, fudroppable: { active: draggingImage }, css: { isdragging: dragging, isdraggingimg: draggingImage }, block: content\"></div> \\x3c!-- /ko --\\x3e </div> <div id=\"toolbar\" class=\"mo\" data-bind=\"tooltips: {}\"> \\x3c!-- ko if: typeof $root.undo != \\'undefined\\' --\\x3e <span data-bind=\"buttonset: { }\" class=\"leftButtons\"> <a title=\"Undo last operation\" href=\"javascript:void(0)\" data-bind=\"attr: { title: $root.t(\\'Undo last operation\\') }, click: $root.undo.execute, clickBubble: false, button: { disabled: !$root.undo.enabled(), icons: { primary: \\'fa fa-reply\\' }, label: $root.undo.name, text: true }\">UNDO</a> <a title=\"Redo last operation\" href=\"javascript:void(0)\" data-bind=\"attr: { title: $root.t(\\'Redo last operation\\') }, click: $root.redo.execute, clickBubble: false, button: { disabled: !$root.redo.enabled(), icons: { primary: \\'fa fa-share\\' }, label: $root.redo.name, text: true }\">REDO</a> </span> \\x3c!-- ko if: $root.debug --\\x3e <a href=\"javascript:void(0)\" data-bind=\"click: $root.undoReset, clickBubble: false, button: { disabled: !$root.undo.enabled() && !$root.redo.enabled(), label: \\'reset\\', text: true }\">RESET</a> \\x3c!-- /ko --\\x3e \\x3c!-- /ko --\\x3e <span> <input id=\"showGallery\" type=\"checkbox\" data-bind=\"checked: $root.showGallery, button: { refreshOn: $root.showGallery, icons: { primary: \\'fa fa-fw fa-picture-o\\', secondary: null }, text: true, label: $root.t(\\'Gallery\\') }\"><label title=\"Show image gallery\" for=\"showGallery\" data-bind=\"attr: { title: $root.t(\\'Show image gallery\\') }\">show gallery</label></input> </span> <input id=\"previewFrameToggle\" type=\"checkbox\" data-bind=\"checked: $root.showPreviewFrame, button: { refreshOn: $root.showPreviewFrame, icons: { primary: \\'fa fa-fw fa-tablet\\', secondary: null }, text: false, label: $root.t(\\'Preview\\') }\"><label title=\"Show live preview\" for=\"previewFrameToggle\" data-bind=\"attr: { title: $root.t(\\'Show live preview\\') }\">PREVIEW</label></input> \\x3c!-- ko if: $root.debug --\\x3e <a href=\"javascript:void(0)\" data-bind=\"click: $root.export, clickBubble: false, button: { label: \\'export\\', text: true }\">EXPORT</a> <input type=\"checkbox\" data-bind=\"checked: $root.debug\" /> debug <a href=\"javascript:void(0)\" data-bind=\"click: $root.loadDefaultBlocks, clickBubble: false, button: { icons: { primary: \\'fa fa-fw fa-upload\\' }, label: \\'Default\\', text: true }\">LOAD BLOCKS</a> [<a id=\"subscriptionsCount\" href=\"javascript:viewModel.loopSubscriptionsCount()\">subs</a>] \\x3c!-- /ko --\\x3e <span data-bind=\"visible: false\"> <input type=\"checkbox\" data-bind=\"checked: $root.showToolbox\" /> toolbox </span> <div class=\"rightButtons\"> \\x3c!-- ko if: typeof $root.save !== \\'undefined\\' --\\x3e <a title=\"Save template\" href=\"javascript:void(0)\" data-bind=\"attr: { title: $root.t(\\'Save template\\') }, click: $root.save.execute, clickBubble: false, button: { disabled: !$root.save.enabled(), icons: { primary: \\'fa fa-fw fa-cloud-upload\\' }, label: $root.t($root.save.name), text: true }\">SALVA</a> \\x3c!-- /ko --\\x3e \\x3c!-- ko if: typeof $root.test !== \\'undefined\\' --\\x3e <a title=\"Show preview and send test\" href=\"javascript:void(0)\" data-bind=\"attr: { title: $root.t(\\'Show preview and send test\\') }, click: $root.test.execute, clickBubble: false, button: { disabled: !$root.test.enabled(), icons: { primary: \\'fa fa-fw fa-paper-plane\\' }, label: $root.t($root.test.name), text: true }\">TEST</a> \\x3c!-- /ko --\\x3e \\x3c!-- ko if: typeof $root.download !== \\'undefined\\' --\\x3e <form id=\"downloadForm\" action=\"#\" method=\"POST\"> <input type=\"hidden\" name=\"action\" value=\"download\" /> <input type=\"hidden\" name=\"filename\" value=\"email.html\" /> <input type=\"hidden\" name=\"html\" id=\"downloadHtmlTextarea\" /> <a title=\"Download template\" href=\"javascript:void(0)\" data-bind=\"attr: { title: $root.t(\\'Download template\\') }, click: $root.download.execute, clickBubble: false, button: { disabled: !$root.download.enabled(), icons: { primary: \\'fa fa-fw fa-download\\' }, label: $root.t($root.download.name), text: true }\">DOWNLOAD</a> </form> \\x3c!-- /ko --\\x3e </div> </div> \\x3c!-- ko if: $root.showToolbox --\\x3e <div id=\"main-toolbox\" class=\"mo\" data-bind=\"scrollable: true, withProperties: { templateMode: \\'edit\\' }\"> <div data-bind=\"template: { name: \\'toolbox\\' }\"></div> </div> \\x3c!-- /ko --\\x3e <div id=\"main-preview\" class=\"mo\" data-bind=\"scrollable: true, if: $root.showPreviewFrame\"> <div id=\"preview-toolbar\"> <div data-bind=\"visible: $root.showPreviewFrame, buttonset: { }\" style=\"display: inline-block\"> <input id=\"previewLarge\" type=\"radio\" name=\"previewMode\" value=\"large\" data-bind=\"checked: $root.previewMode, button: { text: false, label: \\'large\\', icons: { primary: \\'fa fa-fw fa-desktop\\' } }\" /> <label for=\"previewLarge\" title=\"Large screen\" data-bind=\"attr: { title: $root.t(\\'Large screen\\') }\">Large screen</label> <input id=\"previewDesktop\" type=\"radio\" name=\"previewMode\" value=\"desktop\" data-bind=\"checked: $root.previewMode, button: { text: false, label: \\'desktop\\', icons: { primary: \\'fa fa-fw fa-tablet\\' } }\" /> <label for=\"previewDesktop\" title=\"Tablet\" data-bind=\"attr: { title: $root.t(\\'Tablet\\') }\">Tablet</label> <input id=\"previewMobile\" type=\"radio\" name=\"previewMode\" value=\"mobile\" data-bind=\"checked: $root.previewMode, button: { text: false, label: \\'mobile\\', icons: { primary: \\'fa fa-fw fa-mobile\\' } }\" /> <label for=\"previewMobile\" title=\"Smartphone\" data-bind=\"attr: { title: $root.t(\\'Smartphone\\') }\">Smartphone</label> </div> </div> <div id=\"frame-container\" data-bind=\"css: { desktop: $root.previewMode() == \\'desktop\\', mobile: $root.previewMode() == \\'mobile\\', large: $root.previewMode() == \\'large\\' }\"> <iframe data-bind=\"bindIframe: $data\"></iframe> </div> </div> <div class=\"mo\" id=\"mo-body\"></div> <div id=\"incompatible-template\" title=\"Saved model is obsolete\" style=\"display: none\" data-bind=\"attr: { title: $root.t(\\'Saved model is obsolete\\') }, html: $root.t(\\'<p>The saved model has been created with a previous, non completely compatible version, of the template</p><p>Some content or style in the model <b>COULD BE LOST</b> if you will <b>save</b></p><p>Contact us for more informations!</p>\\')\"> Incompatible template </div> <div id=\"fake-image-editor\" title=\"Fake image editor\" style=\"display: none\" data-bind=\"attr: { title: $root.t(\\'Fake image editor\\') }, html: $root.t(\\'<p>Fake image editor</p>\\')\"> <p>Fake image editor</p> </div></div>\\x3c!-- ko if: $root.logoPath --\\x3e<div id=\"loading\" class=\"loading\" style=\"display: block; width: 300px; text-align: center; height: 32px; position: absolute; top:0; bottom: 0; left: 0; right: 0; margin: auto;\" data-bind=\"attr: { style: \\'position: absolute; top: 5px; left: 6px; z-index: 150;\\'}, css: { loading: false }\"> <a href=\"/\" data-bind=\"attr: { href: $root.logoUrl, alt: $root.logoAlt }\"><img data-bind=\"attr: { src: $root.logoPath }\" width=\"32\" height=\"32\" alt=\"mosaico\" border=\"0\" /></a> <div style=\"opacity: 0\" data-bind=\"visible: false\">Oppps... !!</div></div>\\x3c!-- /ko --\\x3e'),templateSystem.addTemplate(\"toolbox\",'<div id=\"tooltabs\" class=\"tabs_horizontal button_color\" data-bind=\"tabs: { active: $root.selectedTool }\"> <ul> <li data-bind=\"tooltips: {}\"><a title=\"Blocks ready to be added to the template\" data-local=\"true\" href=\"#toolblocks\" data-bind=\"attr: { title: $root.t(\\'Blocks ready to be added to the template\\') }\"><i class=\"fa fa-fw fa-cubes\"></i> <span data-bind=\"html: $root.t(\\'Blocks\\')\">Blocks</span></a></li> <li data-bind=\"tooltips: {}\"><a title=\"Edit content options\" href=\"#toolcontents\" data-local=\"true\" data-bind=\"attr: { title: $root.t(\\'Edit content options\\') }\"><i class=\"fa fa-fw fa-pencil\"></i> <span data-bind=\"html: $root.t(\\'Content\\')\">Content</span></a></li> <li data-bind=\"tooltips: {}\"><a title=\"Edit style options\" href=\"#toolstyles\" data-local=\"true\" data-bind=\"attr: { title: $root.t(\\'Edit style options\\') }\"><i class=\"fa fa-fw fa-paint-brush\"></i> <span data-bind=\"html: $root.t(\\'Style\\')\">Style</span></a></li> </ul> <div id=\"toolblocks\" data-bind=\"scrollable: true\"> <div class=\"block-list\" data-bind=\"foreach: blockDefs\" style=\"text-align: center\"> <div class=\"draggable-item\" data-bind=\"withProperties: { templateMode: \\'show\\' }\"> <div class=\"block\" data-bind=\"extdraggable: { connectClass: \\'sortable-blocks-edit\\', data: $data, dropContainer: \\'#main-wysiwyg-area\\', dragging: $root.dragging, \\'options\\': { handle: \\'.handle\\', distance: 10, \\'appendTo\\': \\'#page\\' } }, click: $root.addBlock\" style=\"position: relative;\"> <div title=\"Click or drag to add this block to the template\" class=\"handle\" data-bind=\"attr: { title: $root.t(\\'Click or drag to add this block to the template\\') }, tooltips: {}\"></div> <img data-bind=\"attr: { alt: $root.t(\\'Block __name__\\', { name: ko.utils.unwrapObservable(type) }), src: $root.templatePath(\\'edres/\\'+ko.utils.unwrapObservable(type)+\\'.png\\') }\" alt=\"Block __name__\" /> </div> <a href=\"javascript:void(0)\" class=\"addblockbutton\" data-bind=\"click: $root.addBlock, button: { label: $root.t(\\'Add\\') }\">Add</a> </div> </div> </div> <div id=\"toolcontents\" data-bind=\"scrollable: true\"> \\x3c!-- ko if: $root.selectedBlock() !== null --\\x3e <div data-bind=\"block: $root.selectedBlock\"></div> \\x3c!-- /ko --\\x3e \\x3c!-- ko if: $root.selectedBlock() == null --\\x3e <div class=\"noSelectedBlock\" data-bind=\"text: $root.t(\\'By clicking on message parts you will select a block and content options, if any, will show here\\')\">By clicking on message parts you will select a block and content options, if any, will show here</div> \\x3c!-- /ko --\\x3e \\x3c!-- ko block: content --\\x3e\\x3c!-- /ko --\\x3e </div> <div id=\"toolstyles\" data-bind=\"scrollable: true, withProperties: { templateMode: \\'styler\\' }\"> \\x3c!-- ko if: typeof $root.content().theme === \\'undefined\\' || typeof $root.content().theme().scheme === \\'undefined\\' || $root.content().theme().scheme() === \\'custom\\' --\\x3e \\x3c!-- ko if: $root.selectedBlock() !== null --\\x3e <div data-bind=\"block: $root.selectedBlock, css: { workLocal: $root.selectedBlock().customStyle, workGlobal: typeof $root.selectedBlock().customStyle === \\'undefined\\' || !$root.selectedBlock().customStyle() }\"></div> \\x3c!-- /ko --\\x3e \\x3c!-- ko if: $root.selectedBlock() == null --\\x3e <div class=\"noSelectedBlock\" data-bind=\"text: $root.t(\\'By clicking on message parts you will select a block and style options, if available, will show here\\')\">By clicking on message parts you will select a block and style options, if available, will show here</div> \\x3c!-- /ko --\\x3e <div class=\"workGlobalContent\"> \\x3c!-- ko block: content --\\x3e\\x3c!-- /ko --\\x3e </div> \\x3c!-- /ko --\\x3e </div></div> <div id=\"toolimages\" class=\"slidebar\" data-bind=\"scrollable: true, css: { hidden: $root.showGallery() === false }\"> <div class=\"close\" data-bind=\"click: $root.showGallery.bind($element, false);\">X</div> <span class=\"pane-title\" data-bind=\"text: $root.t(\\'Gallery:\\')\">Gallery:</span> <div data-drop-content=\"Drop here\" class=\"img-dropzone pane uploadzone\" data-bind=\"attr: { \\'data-drop-content\\': $root.t(\\'Drop here\\') }, fudroppable: { activeClass: \\'ui-state-highlight\\', hoverClass: \\'ui-state-draghover\\' }\"> <div class=\"mo-uploadzone\" style=\"position: relative; padding: 2em; border: 2px dotted #808080\"> <input class=\"fileupload\" type=\"file\" multiple name=\"files[]\" data-bind=\"fileupload: { onerror: $root.notifier.error, onfile: $root.loadImage }\" style=\"z-index: 10; position: absolute; top: 0; left: 0; right: 0; bottom: 0; min-width: 100%; min-height: 100%; font-zie: 999px; text-align: right; filter: alpha(opacity=0); opacity: 0; outline: none; cursor: inherit; display: block\"> <span data-bind=\"text: $root.t(\\'Click or drag files here\\')\">Click or drag files here</span> <div class=\"workzone\" style=\"position: absolute; top: 0; left: 0; right: 0; bottom: 0; overflow: hidden;\"> <div class=\"progress\" style=\"opacity: .5; width: 80%; margin-left: 10%; position: absolute; bottom: 30%; height: 20px; border: 2px solid black;\"> <div class=\"progress-bar progress-bar-success\" style=\"height: 20px; background-color: black; \"></div> </div> </div> </div> </div> \\x3c!-- ko if: $root.showGallery() --\\x3e <div id=\"toolimagestab\" class=\"tabs_horizontal\" data-bind=\"tabs: { active: $root.selectedImageTab }\"> <ul> <li data-bind=\"tooltips: {}\"><a title=\"Session images\" data-local=\"true\" href=\"#toolimagesrecent\" data-bind=\"attr: { title: $root.t(\\'Session images\\') }, text: $root.t(\\'Recents\\')\">Recents</a></li> <li data-bind=\"tooltips: {}\"><a title=\"Remote gallery\" data-local=\"true\" href=\"#toolimagesgallery\" data-bind=\"attr: { title: $root.t(\\'Remote gallery\\') }, text: $root.t(\\'Gallery\\')\">Gallery</a></li> </ul> <div id=\"toolimagesrecent\"> \\x3c!-- ko if: galleryRecent().length == 0 --\\x3e<div class=\"galleryEmpty\" data-bind=\"text: $root.t(\\'No images uploaded, yet\\')\">No images uploaded, yet</div>\\x3c!-- /ko --\\x3e \\x3c!-- ko template: {name: \\'gallery-images\\', data: { items: galleryRecent } } --\\x3e# recent gallery #\\x3c!-- /ko --\\x3e </div> <div id=\"toolimagesgallery\" style=\"text-align: center\"> \\x3c!-- ko if: $root.galleryLoaded() === false --\\x3e<a class=\"loadbutton\" title=\"Show images from the gallery\" href=\"javascript:void(0)\" data-bind=\"attr: { title: $root.t(\\'Show images from the gallery\\') }, click: $root.loadGallery, button: { disabled: $root.galleryLoaded, icons: { primary: \\'fa fa-fw fa-picture-o\\' }, label: $root.galleryLoaded() == \\'loading\\' ? $root.t(\\'Loading...\\') : $root.t(\\'Load gallery\\'), text: true }\"># load gally #</a>\\x3c!-- /ko --\\x3e \\x3c!-- ko if: $root.galleryLoaded() === \\'loading\\' --\\x3e<div class=\"galleryEmpty\" data-bind=\"text: $root.t(\\'Loading gallery...\\')\">Loading gallery...</div>\\x3c!-- /ko --\\x3e \\x3c!-- ko if: $root.galleryLoaded() === 0 --\\x3e<div class=\"galleryEmpty\" data-bind=\"text: $root.t(\\'The gallery is empty\\')\">The gallery is empty</div>\\x3c!-- /ko --\\x3e \\x3c!-- ko template: {name: \\'gallery-images\\', data: { items: galleryRemote } } --\\x3e# remote gallery #\\x3c!-- /ko --\\x3e </div> </div> \\x3c!-- /ko --\\x3e</div><div id=\"tooldebug\" class=\"slidebar\" data-bind=\"css: { hidden: $root.debug() === false }\"> <div class=\"close\" data-bind=\"click: $root.debug.bind($element, false);\">X</div> \\x3c!-- ko if: $root.debug --\\x3e Content: <pre data-bind=\\'text: ko.toJSON(content, null, 2)\\' style=\"overflow: auto; height: 20%\"></pre> BlockDefs: <pre data-bind=\\'text: ko.toJSON(blockDefs, null, 2)\\' style=\"overflow: auto; height: 20%\"></pre> \\x3c!-- /ko --\\x3e <a href=\"javascript:void(0)\" data-bind=\"click: $root.exportHTMLtoTextarea.bind($element, \\'#outputhtml\\'); clickBubble: false, button: { text: true, label:\\'Generate\\' }\">Output</a> <a href=\"javascript:void(0)\" data-bind=\"click: $root.exportJSONtoTextarea.bind($element, \\'#outputhtml\\'); clickBubble: false, button: { text: true, label:\\'Export\\' }\">Export</a> <a href=\"javascript:void(0)\" data-bind=\"click: $root.importJSONfromTextarea.bind($element, \\'#outputhtml\\'); clickBubble: false, button: { text: true, label:\\'Import\\' }\">Import</a> <textarea id=\"outputhtml\" rows=\"10\" style=\"width: 100%;\"></textarea></div><div id=\"tooltheme\" class=\"ui-widget slidebar\" data-bind=\"css: { hidden: $root.showTheme() === false }\"> <div class=\"close\" data-bind=\"click: $root.showTheme.bind($element, false);\">X</div> \\x3c!-- ko withProperties: { templateMode: \\'styler\\' } --\\x3e \\x3c!-- ko if: $root.showTheme --\\x3e \\x3c!-- ko block: $root.content().theme --\\x3e\\x3c!-- /ko --\\x3e \\x3c!-- /ko --\\x3e \\x3c!-- /ko --\\x3e</div>')});\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlbXBsYXRlcy5qcyJdLCJuYW1lcyI6WyJ0ZW1wbGF0ZVN5c3RlbSIsInJlcXVpcmUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsImFkZFRlbXBsYXRlIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxlQUFpQkMsUUFBUSx5Q0FDN0JDLFNBQVNDLGlCQUFpQixtQkFBb0IsU0FBU0MsR0FDdkRKLGVBQWVLLFlBQVksUUFBUyxzR0FDcENMLGVBQWVLLFlBQVksYUFBYyxxR0FDekNMLGVBQWVLLFlBQVksZ0JBQWlCLCtnRUFDNUNMLGVBQWVLLFlBQVksY0FBZSx5RkFDMUNMLGVBQWVLLFlBQVksaUJBQWtCLGdtQkFDN0NMLGVBQWVLLFlBQVksY0FBZSx1MkJBQzFDTCxlQUFlSyxZQUFZLFFBQVMsSUFDcENMLGVBQWVLLFlBQVksUUFBUyxvRkFDcENMLGVBQWVLLFlBQVksaUJBQWtCLDJwREFDN0NMLGVBQWVLLFlBQVksY0FBZSw0NElBQzFDTCxlQUFlSyxZQUFZLE9BQVEsNC9PQUNuQ0wsZUFBZUssWUFBWSxVQUFXIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vYnVpbGQvdGVtcGxhdGVzLmpzIn0=",
"'use strict';\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n",
"/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nvar now = require(\"date-now\")\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n",
"module.exports = now\n\nfunction now() {\n return new Date().getTime()\n}\n",
"/*\n evol.colorpicker 3.2.2\n (c) 2015 Olivier Giulieri\n http://evoluteur.github.io/colorpicker/\n*/\n!function(a,b){var c=0,d=window.navigator.userAgent,e=d.indexOf(\"MSIE \")>0,f=e?\"-ie\":\"\",g=e?!1:/mozilla/.test(d.toLowerCase())&&!/webkit/.test(d.toLowerCase()),h=[],i=[\"ffffff\",\"000000\",\"eeece1\",\"1f497d\",\"4f81bd\",\"c0504d\",\"9bbb59\",\"8064a2\",\"4bacc6\",\"f79646\"],j=[\"f2f2f2\",\"7f7f7f\",\"ddd9c3\",\"c6d9f0\",\"dbe5f1\",\"f2dcdb\",\"ebf1dd\",\"e5e0ec\",\"dbeef3\",\"fdeada\",\"d8d8d8\",\"595959\",\"c4bd97\",\"8db3e2\",\"b8cce4\",\"e5b9b7\",\"d7e3bc\",\"ccc1d9\",\"b7dde8\",\"fbd5b5\",\"bfbfbf\",\"3f3f3f\",\"938953\",\"548dd4\",\"95b3d7\",\"d99694\",\"c3d69b\",\"b2a2c7\",\"92cddc\",\"fac08f\",\"a5a5a5\",\"262626\",\"494429\",\"17365d\",\"366092\",\"953734\",\"76923c\",\"5f497a\",\"31859b\",\"e36c09\",\"7f7f7f\",\"0c0c0c\",\"1d1b10\",\"0f243e\",\"244061\",\"632423\",\"4f6128\",\"3f3151\",\"205867\",\"974806\"],k=[\"c00000\",\"ff0000\",\"ffc000\",\"ffff00\",\"92d050\",\"00b050\",\"00b0f0\",\"0070c0\",\"002060\",\"7030a0\"],l=[[\"003366\",\"336699\",\"3366cc\",\"003399\",\"000099\",\"0000cc\",\"000066\"],[\"006666\",\"006699\",\"0099cc\",\"0066cc\",\"0033cc\",\"0000ff\",\"3333ff\",\"333399\"],[\"669999\",\"009999\",\"33cccc\",\"00ccff\",\"0099ff\",\"0066ff\",\"3366ff\",\"3333cc\",\"666699\"],[\"339966\",\"00cc99\",\"00ffcc\",\"00ffff\",\"33ccff\",\"3399ff\",\"6699ff\",\"6666ff\",\"6600ff\",\"6600cc\"],[\"339933\",\"00cc66\",\"00ff99\",\"66ffcc\",\"66ffff\",\"66ccff\",\"99ccff\",\"9999ff\",\"9966ff\",\"9933ff\",\"9900ff\"],[\"006600\",\"00cc00\",\"00ff00\",\"66ff99\",\"99ffcc\",\"ccffff\",\"ccccff\",\"cc99ff\",\"cc66ff\",\"cc33ff\",\"cc00ff\",\"9900cc\"],[\"003300\",\"009933\",\"33cc33\",\"66ff66\",\"99ff99\",\"ccffcc\",\"ffffff\",\"ffccff\",\"ff99ff\",\"ff66ff\",\"ff00ff\",\"cc00cc\",\"660066\"],[\"333300\",\"009900\",\"66ff33\",\"99ff66\",\"ccff99\",\"ffffcc\",\"ffcccc\",\"ff99cc\",\"ff66cc\",\"ff33cc\",\"cc0099\",\"993399\"],[\"336600\",\"669900\",\"99ff33\",\"ccff66\",\"ffff99\",\"ffcc99\",\"ff9999\",\"ff6699\",\"ff3399\",\"cc3399\",\"990099\"],[\"666633\",\"99cc00\",\"ccff33\",\"ffff66\",\"ffcc66\",\"ff9966\",\"ff6666\",\"ff0066\",\"d60094\",\"993366\"],[\"a58800\",\"cccc00\",\"ffff00\",\"ffcc00\",\"ff9933\",\"ff6600\",\"ff0033\",\"cc0066\",\"660033\"],[\"996633\",\"cc9900\",\"ff9900\",\"cc6600\",\"ff3300\",\"ff0000\",\"cc0000\",\"990033\"],[\"663300\",\"996600\",\"cc3300\",\"993300\",\"990000\",\"800000\",\"993333\"]],m=\"#0000ffff\",n=function(a){var b=a.toString(16);return 1==b.length&&(b=\"0\"+b),b},o=function(a){return n(Number(a))},p=function(a){var b=n(a);return b+b+b},q=function(a){if(a.length>10){var b=1+a.indexOf(\"(\"),c=a.indexOf(\")\"),d=a.substring(b,c).split(\",\");return[\"#\",o(d[0]),o(d[1]),o(d[2])].join(\"\")}return a};a.widget(\"evol.colorpicker\",{version:\"3.2.1\",options:{color:null,showOn:\"both\",hideButton:!1,displayIndicator:!0,transparentColor:!1,history:!0,defaultPalette:\"theme\",strings:\"Theme Colors,Standard Colors,Web Colors,Theme Colors,Back to Palette,History,No history yet.\"},_active:!1,_create:function(){var b=this;switch(this._paletteIdx=\"theme\"==this.options.defaultPalette?1:2,this._id=\"evo-cp\"+c++,this._enabled=!0,this.options.showOn=this.options.hideButton?\"focus\":this.options.showOn,this.element.get(0).tagName){case\"INPUT\":var d=this.options.color,h=this.element,i=(\"focus\"===this.options.showOn?\"\":\"evo-pointer \")+\"evo-colorind\"+(g?\"-ff\":f)+(this.options.hideButton?\" evo-hidden-button\":\"\"),j=\"\";if(this._isPopup=!0,this._palette=null,null!==d)h.val(d);else{var k=h.val();\"\"!==k&&(d=this.options.color=k)}d===m?i+=\" evo-transparent\":j=null!==d?\"background-color:\"+d:\"\",h.addClass(\"colorPicker \"+this._id).wrap('<div style=\"width:'+(this.options.hideButton?this.element.width():this.element.width()+32)+\"px;\"+(e?\"margin-bottom:-21px;\":\"\")+(g?\"padding:1px 0;\":\"\")+'\"></div>').after('<div class=\"'+i+'\" style=\"'+j+'\"></div>').on(\"keyup onpaste\",function(c){var d=a(this).val();d!=b.options.color&&b._setValue(d,!0)});var l=this.options.showOn;(\"both\"===l||\"focus\"===l)&&h.on(\"focus\",function(){b.showPalette()}),(\"both\"===l||\"button\"===l)&&h.next().on(\"click\",function(a){return a.stopPropagation(),b.showPalette(),!1});break;default:this._isPopup=!1,this._palette=this.element.html(this._paletteHTML()).attr(\"aria-haspopup\",\"true\"),this._bindColors()}if(this.options.history&&(d&&this._add2History(d),this.options.initialHistory)){var n=this.options.initialHistory;for(var o in n)this._add2History(n[o])}},_paletteHTML:function(){var a=this._paletteIdx=Math.abs(this._paletteIdx),b=this.options,c=b.strings.split(\",\"),d='<div class=\"evo-pop'+f+' ui-widget ui-widget-content ui-corner-all\"'+(this._isPopup?' style=\"position:absolute\"':\"\")+\"><span>\"+this[\"_paletteHTML\"+a]()+'</span><div class=\"evo-more\"><a href=\"javascript:void(0)\">'+c[1+a]+\"</a>\";return b.history&&(d+='<a href=\"javascript:void(0)\" class=\"evo-hist\">'+c[5]+\"</a>\"),d+=\"</div>\",b.displayIndicator&&(d+=this._colorIndHTML(this.options.color)+this._colorIndHTML(\"\")),d+=\"</div>\"},_colorIndHTML:function(a){var b=e?\"evo-colorbox-ie \":\"\",c=\"\";return a?a===m?b+=\"evo-transparent\":c=\"background-color:\"+a:c=\"display:none\",'<div class=\"evo-color\" style=\"float:left\"><div style=\"'+c+'\" class=\"'+b+'\"></div><span>'+(a?a:\"\")+\"</span></div>\"},_paletteHTML1:function(){for(var a=this.options,b=a.strings.split(\",\"),c='<td style=\"background-color:#',d=e?'\"><div style=\"width:2px;\"></div></td>':'\"><span/></td>',g='<tr><th colspan=\"10\" class=\"ui-widget-content\">',h='<table class=\"evo-palette'+f+'\">'+g+b[0]+\"</th></tr><tr>\",l=0;10>l;l++)h+=c+i[l]+d;for(h+=\"</tr>\",e||(h+='<tr><th colspan=\"10\"></th></tr>'),h+='<tr class=\"top\">',l=0;10>l;l++)h+=c+j[l]+d;for(var m=1;4>m;m++)for(h+='</tr><tr class=\"in\">',l=0;10>l;l++)h+=c+j[10*m+l]+d;for(h+='</tr><tr class=\"bottom\">',l=40;50>l;l++)h+=c+j[l]+d;for(h+=\"</tr>\"+g,a.transparentColor&&(h+='<div class=\"evo-transparent evo-tr-box\"></div>'),h+=b[1]+\"</th></tr><tr>\",l=0;10>l;l++)h+=c+k[l]+d;return h+=\"</tr></table>\"},_paletteHTML2:function(){for(var a,b,c='<td style=\"background-color:#',d=e?'\"><div style=\"width:5px;\"></div></td>':'\"><span/></td>',g='<table class=\"evo-palette2'+f+'\"><tr>',h=\"</tr></table>\",i='<div class=\"evo-palcenter\">',j=0,k=l.length;k>j;j++){i+=g;var m=l[j];for(a=0,b=m.length;b>a;a++)i+=c+m[a]+d;i+=h}i+='<div class=\"evo-sep\"/>';var n=\"\";for(i+=g,a=255;a>10;a-=10)i+=c+p(a)+d,a-=10,n+=c+p(a)+d;return i+=h+g+n+h+\"</div>\"},_switchPalette:function(b){if(this._enabled){var c,d,e,f=this.options.strings.split(\",\");if(a(b).hasClass(\"evo-hist\")){var g=['<table class=\"evo-palette\"><tr><th class=\"ui-widget-content\">',f[5],\"</th></tr></tr></table>\",'<div class=\"evo-cHist\">'];if(0===h.length)g.push(\"<p>&nbsp;\",f[6],\"</p>\");else for(var i=h.length-1;i>-1;i--)9===h[i].length?g.push('<div class=\"evo-transparent\"></div>'):g.push('<div style=\"background-color:',h[i],'\"></div>');g.push(\"</div>\"),c=-this._paletteIdx,d=g.join(\"\"),e=f[4]}else this._paletteIdx<0?(c=-this._paletteIdx,this._palette.find(\".evo-hist\").show()):c=2==this._paletteIdx?1:2,d=this[\"_paletteHTML\"+c](),e=f[c+1],this._paletteIdx=c;this._paletteIdx=c;var j=this._palette.find(\".evo-more\").prev().html(d).end().children().eq(0).html(e);0>c&&j.next().hide()}},_downOrUpPositioning:function(){for(var a=this.element,b=0;null!==a&&100>b;){if(\"visible\"!=a.css(\"overflow\")){var c=this._palette.offset().top+this._palette.height(),d=a.offset().top+a.height(),e=this._palette.offset().top-this._palette.height()-this.element.outerHeight(),f=a.offset().top,g=c>d&&e>f;g?this._palette.css({bottom:this.element.outerHeight()+\"px\"}):this._palette.css({bottom:\"auto\"});break}if(\"HTML\"==a[0].tagName)break;a=a.offsetParent(),b++}},showPalette:function(){if(this._enabled&&(this._active=!0,a(\".colorPicker\").not(\".\"+this._id).colorpicker(\"hidePalette\"),null===this._palette)){this._palette=this.element.next().after(this._paletteHTML()).next().on(\"click\",function(a){return a.stopPropagation(),!1}),this._bindColors();var b=this;this._isPopup&&(this._downOrUpPositioning(),a(document.body).on(\"click.\"+b._id,function(a){a.target!=b.element.get(0)&&b.hidePalette()}).on(\"keyup.\"+b._id,function(a){27===a.keyCode&&b.hidePalette()}))}return this},hidePalette:function(){if(this._isPopup&&this._palette){a(document.body).off(\"click.\"+this._id);var b=this;this._palette.off(\"mouseover click\",\"td,.evo-transparent\").fadeOut(function(){b._palette.remove(),b._palette=b._cTxt=null}).find(\".evo-more a\").off(\"click\")}return this},_bindColors:function(){var b=this,c=this.options,d=this._palette.find(\"div.evo-color\"),e=c.history?\"td,.evo-cHist>div\":\"td\";c.transparentColor&&(e+=\",.evo-transparent\"),this._cTxt1=d.eq(0).children().eq(0),this._cTxt2=d.eq(1).children().eq(0),this._palette.on(\"click\",e,function(c){if(b._enabled){var d=a(this);b._setValue(d.hasClass(\"evo-transparent\")?m:q(d.attr(\"style\").substring(17))),b._active=!1}}).on(\"mouseover\",e,function(c){if(b._enabled){var d=a(this),e=d.hasClass(\"evo-transparent\")?m:q(d.attr(\"style\").substring(17));b.options.displayIndicator&&b._setColorInd(e,2),b._active&&b.element.trigger(\"mouseover.color\",e)}}).find(\".evo-more a\").on(\"click\",function(){b._switchPalette(this)})},val:function(a){return\"undefined\"==typeof a?this.options.color:(this._setValue(a),this)},_setValue:function(a,b){a=a.replace(/ /g,\"\"),this.options.color=a,this._isPopup?(b||this.hidePalette(),this._setBoxColor(this.element.val(a).next(),a)):this._setColorInd(a,1),this.options.history&&this._paletteIdx>0&&this._add2History(a),this.element.trigger(\"change.color\",a)},_setColorInd:function(a,b){var c=this[\"_cTxt\"+b];this._setBoxColor(c,a),c.next().html(a)},_setBoxColor:function(a,b){b===m?a.addClass(\"evo-transparent\").removeAttr(\"style\"):a.removeClass(\"evo-transparent\").attr(\"style\",\"background-color:\"+b)},_setOption:function(a,b){\"color\"==a?this._setValue(b,!0):this.options[a]=b},_add2History:function(a){for(var b=h.length,c=0;b>c;c++)if(a==h[c])return;b>27&&h.shift(),h.push(a)},clear:function(){this.hidePalette().val(\"\")},enable:function(){var a=this.element;return this._isPopup?a.removeAttr(\"disabled\"):a.css({opacity:\"1\",\"pointer-events\":\"auto\"}),\"focus\"!==this.options.showOn&&this.element.next().addClass(\"evo-pointer\"),a.removeAttr(\"aria-disabled\"),this._enabled=!0,this},disable:function(){var a=this.element;return this._isPopup?a.attr(\"disabled\",\"disabled\"):(this.hidePalette(),a.css({opacity:\"0.3\",\"pointer-events\":\"none\"})),\"focus\"!==this.options.showOn&&this.element.next().removeClass(\"evo-pointer\"),a.attr(\"aria-disabled\",\"true\"),this._enabled=!1,this},isDisabled:function(){return!this._enabled},destroy:function(){a(document.body).off(\"click.\"+this._id),this._palette&&(this._palette.off(\"mouseover click\",\"td,.evo-cHist>div,.evo-transparent\").find(\".evo-more a\").off(\"click\"),this._isPopup&&this._palette.remove(),this._palette=this._cTxt=null),this._isPopup&&this.element.next().off(\"click\").remove().end().off(\"focus\").unwrap(),this.element.removeClass(\"colorPicker \"+this.id).empty(),a.Widget.prototype.destroy.call(this)}})}(jQuery);",
"// JavaScript Expression Parser (JSEP) 0.3.3\r\n// JSEP may be freely distributed under the MIT License\r\n// http://jsep.from.so/\r\n\r\n/*global module: true, exports: true, console: true */\r\n(function (root) {\r\n\t'use strict';\r\n\t// Node Types\r\n\t// ----------\r\n\r\n\t// This is the full set of types that any JSEP node can be.\r\n\t// Store them here to save space when minified\r\n\tvar COMPOUND = 'Compound',\r\n\t\tIDENTIFIER = 'Identifier',\r\n\t\tMEMBER_EXP = 'MemberExpression',\r\n\t\tLITERAL = 'Literal',\r\n\t\tTHIS_EXP = 'ThisExpression',\r\n\t\tCALL_EXP = 'CallExpression',\r\n\t\tUNARY_EXP = 'UnaryExpression',\r\n\t\tBINARY_EXP = 'BinaryExpression',\r\n\t\tLOGICAL_EXP = 'LogicalExpression',\r\n\t\tCONDITIONAL_EXP = 'ConditionalExpression',\r\n\t\tARRAY_EXP = 'ArrayExpression',\r\n\r\n\t\tPERIOD_CODE = 46, // '.'\r\n\t\tCOMMA_CODE = 44, // ','\r\n\t\tSQUOTE_CODE = 39, // single quote\r\n\t\tDQUOTE_CODE = 34, // double quotes\r\n\t\tOPAREN_CODE = 40, // (\r\n\t\tCPAREN_CODE = 41, // )\r\n\t\tOBRACK_CODE = 91, // [\r\n\t\tCBRACK_CODE = 93, // ]\r\n\t\tQUMARK_CODE = 63, // ?\r\n\t\tSEMCOL_CODE = 59, // ;\r\n\t\tCOLON_CODE = 58, // :\r\n\r\n\t\tthrowError = function(message, index) {\r\n\t\t\tvar error = new Error(message + ' at character ' + index);\r\n\t\t\terror.index = index;\r\n\t\t\terror.description = message;\r\n\t\t\tthrow error;\r\n\t\t},\r\n\r\n\t// Operations\r\n\t// ----------\r\n\r\n\t// Set `t` to `true` to save space (when minified, not gzipped)\r\n\t\tt = true,\r\n\t// Use a quickly-accessible map to store all of the unary operators\r\n\t// Values are set to `true` (it really doesn't matter)\r\n\t\tunary_ops = {'-': t, '!': t, '~': t, '+': t},\r\n\t// Also use a map for the binary operations but set their values to their\r\n\t// binary precedence for quick reference:\r\n\t// see [Order of operations](http://en.wikipedia.org/wiki/Order_of_operations#Programming_language)\r\n\t\tbinary_ops = {\r\n\t\t\t'||': 1, '&&': 2, '|': 3, '^': 4, '&': 5,\r\n\t\t\t'==': 6, '!=': 6, '===': 6, '!==': 6,\r\n\t\t\t'<': 7, '>': 7, '<=': 7, '>=': 7,\r\n\t\t\t'<<':8, '>>': 8, '>>>': 8,\r\n\t\t\t'+': 9, '-': 9,\r\n\t\t\t'*': 10, '/': 10, '%': 10\r\n\t\t},\r\n\t// Get return the longest key length of any object\r\n\t\tgetMaxKeyLen = function(obj) {\r\n\t\t\tvar max_len = 0, len;\r\n\t\t\tfor(var key in obj) {\r\n\t\t\t\tif((len = key.length) > max_len && obj.hasOwnProperty(key)) {\r\n\t\t\t\t\tmax_len = len;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn max_len;\r\n\t\t},\r\n\t\tmax_unop_len = getMaxKeyLen(unary_ops),\r\n\t\tmax_binop_len = getMaxKeyLen(binary_ops),\r\n\t// Literals\r\n\t// ----------\r\n\t// Store the values to return for the various literals we may encounter\r\n\t\tliterals = {\r\n\t\t\t'true': true,\r\n\t\t\t'false': false,\r\n\t\t\t'null': null\r\n\t\t},\r\n\t// Except for `this`, which is special. This could be changed to something like `'self'` as well\r\n\t\tthis_str = 'this',\r\n\t// Returns the precedence of a binary operator or `0` if it isn't a binary operator\r\n\t\tbinaryPrecedence = function(op_val) {\r\n\t\t\treturn binary_ops[op_val] || 0;\r\n\t\t},\r\n\t// Utility function (gets called from multiple places)\r\n\t// Also note that `a && b` and `a || b` are *logical* expressions, not binary expressions\r\n\t\tcreateBinaryExpression = function (operator, left, right) {\r\n\t\t\tvar type = (operator === '||' || operator === '&&') ? LOGICAL_EXP : BINARY_EXP;\r\n\t\t\treturn {\r\n\t\t\t\ttype: type,\r\n\t\t\t\toperator: operator,\r\n\t\t\t\tleft: left,\r\n\t\t\t\tright: right\r\n\t\t\t};\r\n\t\t},\r\n\t\t// `ch` is a character code in the next three functions\r\n\t\tisDecimalDigit = function(ch) {\r\n\t\t\treturn (ch >= 48 && ch <= 57); // 0...9\r\n\t\t},\r\n\t\tisIdentifierStart = function(ch) {\r\n\t\t\treturn (ch === 36) || (ch === 95) || // `$` and `_`\r\n\t\t\t\t\t(ch >= 65 && ch <= 90) || // A...Z\r\n\t\t\t\t\t(ch >= 97 && ch <= 122) || // a...z\r\n (ch >= 128 && !binary_ops[String.fromCharCode(ch)]); // any non-ASCII that is not an operator\r\n\t\t},\r\n\t\tisIdentifierPart = function(ch) {\r\n\t\t\treturn (ch === 36) || (ch === 95) || // `$` and `_`\r\n\t\t\t\t\t(ch >= 65 && ch <= 90) || // A...Z\r\n\t\t\t\t\t(ch >= 97 && ch <= 122) || // a...z\r\n\t\t\t\t\t(ch >= 48 && ch <= 57) || // 0...9\r\n (ch >= 128 && !binary_ops[String.fromCharCode(ch)]); // any non-ASCII that is not an operator\r\n\t\t},\r\n\r\n\t\t// Parsing\r\n\t\t// -------\r\n\t\t// `expr` is a string with the passed in expression\r\n\t\tjsep = function(expr) {\r\n\t\t\t// `index` stores the character number we are currently at while `length` is a constant\r\n\t\t\t// All of the gobbles below will modify `index` as we move along\r\n\t\t\tvar index = 0,\r\n\t\t\t\tcharAtFunc = expr.charAt,\r\n\t\t\t\tcharCodeAtFunc = expr.charCodeAt,\r\n\t\t\t\texprI = function(i) { return charAtFunc.call(expr, i); },\r\n\t\t\t\texprICode = function(i) { return charCodeAtFunc.call(expr, i); },\r\n\t\t\t\tlength = expr.length,\r\n\r\n\t\t\t\t// Push `index` up to the next non-space character\r\n\t\t\t\tgobbleSpaces = function() {\r\n\t\t\t\t\tvar ch = exprICode(index);\r\n\t\t\t\t\t// space or tab\r\n\t\t\t\t\twhile(ch === 32 || ch === 9 || ch === 10 || ch === 13) {\r\n\t\t\t\t\t\tch = exprICode(++index);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// The main parsing function. Much of this code is dedicated to ternary expressions\r\n\t\t\t\tgobbleExpression = function() {\r\n\t\t\t\t\tvar test = gobbleBinaryExpression(),\r\n\t\t\t\t\t\tconsequent, alternate;\r\n\t\t\t\t\tgobbleSpaces();\r\n\t\t\t\t\tif(exprICode(index) === QUMARK_CODE) {\r\n\t\t\t\t\t\t// Ternary expression: test ? consequent : alternate\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\tconsequent = gobbleExpression();\r\n\t\t\t\t\t\tif(!consequent) {\r\n\t\t\t\t\t\t\tthrowError('Expected expression', index);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tgobbleSpaces();\r\n\t\t\t\t\t\tif(exprICode(index) === COLON_CODE) {\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t\talternate = gobbleExpression();\r\n\t\t\t\t\t\t\tif(!alternate) {\r\n\t\t\t\t\t\t\t\tthrowError('Expected expression', index);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\ttype: CONDITIONAL_EXP,\r\n\t\t\t\t\t\t\t\ttest: test,\r\n\t\t\t\t\t\t\t\tconsequent: consequent,\r\n\t\t\t\t\t\t\t\talternate: alternate\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrowError('Expected :', index);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn test;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Search for the operation portion of the string (e.g. `+`, `===`)\r\n\t\t\t\t// Start by taking the longest possible binary operations (3 characters: `===`, `!==`, `>>>`)\r\n\t\t\t\t// and move down from 3 to 2 to 1 character until a matching binary operation is found\r\n\t\t\t\t// then, return that binary operation\r\n\t\t\t\tgobbleBinaryOp = function() {\r\n\t\t\t\t\tgobbleSpaces();\r\n\t\t\t\t\tvar biop, to_check = expr.substr(index, max_binop_len), tc_len = to_check.length;\r\n\t\t\t\t\twhile(tc_len > 0) {\r\n\t\t\t\t\t\tif(binary_ops.hasOwnProperty(to_check)) {\r\n\t\t\t\t\t\t\tindex += tc_len;\r\n\t\t\t\t\t\t\treturn to_check;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tto_check = to_check.substr(0, --tc_len);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// This function is responsible for gobbling an individual expression,\r\n\t\t\t\t// e.g. `1`, `1+2`, `a+(b*2)-Math.sqrt(2)`\r\n\t\t\t\tgobbleBinaryExpression = function() {\r\n\t\t\t\t\tvar ch_i, node, biop, prec, stack, biop_info, left, right, i;\r\n\r\n\t\t\t\t\t// First, try to get the leftmost thing\r\n\t\t\t\t\t// Then, check to see if there's a binary operator operating on that leftmost thing\r\n\t\t\t\t\tleft = gobbleToken();\r\n\t\t\t\t\tbiop = gobbleBinaryOp();\r\n\r\n\t\t\t\t\t// If there wasn't a binary operator, just return the leftmost node\r\n\t\t\t\t\tif(!biop) {\r\n\t\t\t\t\t\treturn left;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Otherwise, we need to start a stack to properly place the binary operations in their\r\n\t\t\t\t\t// precedence structure\r\n\t\t\t\t\tbiop_info = { value: biop, prec: binaryPrecedence(biop)};\r\n\r\n\t\t\t\t\tright = gobbleToken();\r\n\t\t\t\t\tif(!right) {\r\n\t\t\t\t\t\tthrowError(\"Expected expression after \" + biop, index);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstack = [left, biop_info, right];\r\n\r\n\t\t\t\t\t// Properly deal with precedence using [recursive descent](http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm)\r\n\t\t\t\t\twhile((biop = gobbleBinaryOp())) {\r\n\t\t\t\t\t\tprec = binaryPrecedence(biop);\r\n\r\n\t\t\t\t\t\tif(prec === 0) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbiop_info = { value: biop, prec: prec };\r\n\r\n\t\t\t\t\t\t// Reduce: make a binary expression from the three topmost entries.\r\n\t\t\t\t\t\twhile ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {\r\n\t\t\t\t\t\t\tright = stack.pop();\r\n\t\t\t\t\t\t\tbiop = stack.pop().value;\r\n\t\t\t\t\t\t\tleft = stack.pop();\r\n\t\t\t\t\t\t\tnode = createBinaryExpression(biop, left, right);\r\n\t\t\t\t\t\t\tstack.push(node);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tnode = gobbleToken();\r\n\t\t\t\t\t\tif(!node) {\r\n\t\t\t\t\t\t\tthrowError(\"Expected expression after \" + biop, index);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tstack.push(biop_info, node);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ti = stack.length - 1;\r\n\t\t\t\t\tnode = stack[i];\r\n\t\t\t\t\twhile(i > 1) {\r\n\t\t\t\t\t\tnode = createBinaryExpression(stack[i - 1].value, stack[i - 2], node);\r\n\t\t\t\t\t\ti -= 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn node;\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// An individual part of a binary expression:\r\n\t\t\t\t// e.g. `foo.bar(baz)`, `1`, `\"abc\"`, `(a % 2)` (because it's in parenthesis)\r\n\t\t\t\tgobbleToken = function() {\r\n\t\t\t\t\tvar ch, to_check, tc_len;\r\n\r\n\t\t\t\t\tgobbleSpaces();\r\n\t\t\t\t\tch = exprICode(index);\r\n\r\n\t\t\t\t\tif(isDecimalDigit(ch) || ch === PERIOD_CODE) {\r\n\t\t\t\t\t\t// Char code 46 is a dot `.` which can start off a numeric literal\r\n\t\t\t\t\t\treturn gobbleNumericLiteral();\r\n\t\t\t\t\t} else if(ch === SQUOTE_CODE || ch === DQUOTE_CODE) {\r\n\t\t\t\t\t\t// Single or double quotes\r\n\t\t\t\t\t\treturn gobbleStringLiteral();\r\n\t\t\t\t\t} else if (ch === OBRACK_CODE) {\r\n\t\t\t\t\t\treturn gobbleArray();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tto_check = expr.substr(index, max_unop_len);\r\n\t\t\t\t\t\ttc_len = to_check.length;\r\n\t\t\t\t\t\twhile(tc_len > 0) {\r\n\t\t\t\t\t\t\tif(unary_ops.hasOwnProperty(to_check)) {\r\n\t\t\t\t\t\t\t\tindex += tc_len;\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\ttype: UNARY_EXP,\r\n\t\t\t\t\t\t\t\t\toperator: to_check,\r\n\t\t\t\t\t\t\t\t\targument: gobbleToken(),\r\n\t\t\t\t\t\t\t\t\tprefix: true\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tto_check = to_check.substr(0, --tc_len);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (isIdentifierStart(ch) || ch === OPAREN_CODE) { // open parenthesis\r\n\t\t\t\t\t\t\t// `foo`, `bar.baz`\r\n\t\t\t\t\t\t\treturn gobbleVariable();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t},\r\n\t\t\t\t// Parse simple numeric literals: `12`, `3.4`, `.5`. Do this by using a string to\r\n\t\t\t\t// keep track of everything in the numeric literal and then calling `parseFloat` on that string\r\n\t\t\t\tgobbleNumericLiteral = function() {\r\n\t\t\t\t\tvar number = '', ch, chCode;\r\n\t\t\t\t\twhile(isDecimalDigit(exprICode(index))) {\r\n\t\t\t\t\t\tnumber += exprI(index++);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(exprICode(index) === PERIOD_CODE) { // can start with a decimal marker\r\n\t\t\t\t\t\tnumber += exprI(index++);\r\n\r\n\t\t\t\t\t\twhile(isDecimalDigit(exprICode(index))) {\r\n\t\t\t\t\t\t\tnumber += exprI(index++);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tch = exprI(index);\r\n\t\t\t\t\tif(ch === 'e' || ch === 'E') { // exponent marker\r\n\t\t\t\t\t\tnumber += exprI(index++);\r\n\t\t\t\t\t\tch = exprI(index);\r\n\t\t\t\t\t\tif(ch === '+' || ch === '-') { // exponent sign\r\n\t\t\t\t\t\t\tnumber += exprI(index++);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\twhile(isDecimalDigit(exprICode(index))) { //exponent itself\r\n\t\t\t\t\t\t\tnumber += exprI(index++);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!isDecimalDigit(exprICode(index-1)) ) {\r\n\t\t\t\t\t\t\tthrowError('Expected exponent (' + number + exprI(index) + ')', index);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tchCode = exprICode(index);\r\n\t\t\t\t\t// Check to make sure this isn't a variable name that start with a number (123abc)\r\n\t\t\t\t\tif(isIdentifierStart(chCode)) {\r\n\t\t\t\t\t\tthrowError('Variable names cannot start with a number (' +\r\n\t\t\t\t\t\t\t\t\tnumber + exprI(index) + ')', index);\r\n\t\t\t\t\t} else if(chCode === PERIOD_CODE) {\r\n\t\t\t\t\t\tthrowError('Unexpected period', index);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttype: LITERAL,\r\n\t\t\t\t\t\tvalue: parseFloat(number),\r\n\t\t\t\t\t\traw: number\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Parses a string literal, staring with single or double quotes with basic support for escape codes\r\n\t\t\t\t// e.g. `\"hello world\"`, `'this is\\nJSEP'`\r\n\t\t\t\tgobbleStringLiteral = function() {\r\n\t\t\t\t\tvar str = '', quote = exprI(index++), closed = false, ch;\r\n\r\n\t\t\t\t\twhile(index < length) {\r\n\t\t\t\t\t\tch = exprI(index++);\r\n\t\t\t\t\t\tif(ch === quote) {\r\n\t\t\t\t\t\t\tclosed = true;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t} else if(ch === '\\\\') {\r\n\t\t\t\t\t\t\t// Check for all of the common escape codes\r\n\t\t\t\t\t\t\tch = exprI(index++);\r\n\t\t\t\t\t\t\tswitch(ch) {\r\n\t\t\t\t\t\t\t\tcase 'n': str += '\\n'; break;\r\n\t\t\t\t\t\t\t\tcase 'r': str += '\\r'; break;\r\n\t\t\t\t\t\t\t\tcase 't': str += '\\t'; break;\r\n\t\t\t\t\t\t\t\tcase 'b': str += '\\b'; break;\r\n\t\t\t\t\t\t\t\tcase 'f': str += '\\f'; break;\r\n\t\t\t\t\t\t\t\tcase 'v': str += '\\x0B'; break;\r\n\t\t\t\t\t\t\t\tdefault : str += ch;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tstr += ch;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!closed) {\r\n\t\t\t\t\t\tthrowError('Unclosed quote after \"'+str+'\"', index);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttype: LITERAL,\r\n\t\t\t\t\t\tvalue: str,\r\n\t\t\t\t\t\traw: quote + str + quote\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Gobbles only identifiers\r\n\t\t\t\t// e.g.: `foo`, `_value`, `$x1`\r\n\t\t\t\t// Also, this function checks if that identifier is a literal:\r\n\t\t\t\t// (e.g. `true`, `false`, `null`) or `this`\r\n\t\t\t\tgobbleIdentifier = function() {\r\n\t\t\t\t\tvar ch = exprICode(index), start = index, identifier;\r\n\r\n\t\t\t\t\tif(isIdentifierStart(ch)) {\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrowError('Unexpected ' + exprI(index), index);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twhile(index < length) {\r\n\t\t\t\t\t\tch = exprICode(index);\r\n\t\t\t\t\t\tif(isIdentifierPart(ch)) {\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tidentifier = expr.slice(start, index);\r\n\r\n\t\t\t\t\tif(literals.hasOwnProperty(identifier)) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttype: LITERAL,\r\n\t\t\t\t\t\t\tvalue: literals[identifier],\r\n\t\t\t\t\t\t\traw: identifier\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else if(identifier === this_str) {\r\n\t\t\t\t\t\treturn { type: THIS_EXP };\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttype: IDENTIFIER,\r\n\t\t\t\t\t\t\tname: identifier\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Gobbles a list of arguments within the context of a function call\r\n\t\t\t\t// or array literal. This function also assumes that the opening character\r\n\t\t\t\t// `(` or `[` has already been gobbled, and gobbles expressions and commas\r\n\t\t\t\t// until the terminator character `)` or `]` is encountered.\r\n\t\t\t\t// e.g. `foo(bar, baz)`, `my_func()`, or `[bar, baz]`\r\n\t\t\t\tgobbleArguments = function(termination) {\r\n\t\t\t\t\tvar ch_i, args = [], node, closed = false;\r\n\t\t\t\t\twhile(index < length) {\r\n\t\t\t\t\t\tgobbleSpaces();\r\n\t\t\t\t\t\tch_i = exprICode(index);\r\n\t\t\t\t\t\tif(ch_i === termination) { // done parsing\r\n\t\t\t\t\t\t\tclosed = true;\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t} else if (ch_i === COMMA_CODE) { // between expressions\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tnode = gobbleExpression();\r\n\t\t\t\t\t\t\tif(!node || node.type === COMPOUND) {\r\n\t\t\t\t\t\t\t\tthrowError('Expected comma', index);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\targs.push(node);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!closed) {\r\n\t\t\t\t\t\tthrowError('Expected ' + String.fromCharCode(termination), index);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn args;\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Gobble a non-literal variable name. This variable name may include properties\r\n\t\t\t\t// e.g. `foo`, `bar.baz`, `foo['bar'].baz`\r\n\t\t\t\t// It also gobbles function calls:\r\n\t\t\t\t// e.g. `Math.acos(obj.angle)`\r\n\t\t\t\tgobbleVariable = function() {\r\n\t\t\t\t\tvar ch_i, node;\r\n\t\t\t\t\tch_i = exprICode(index);\r\n\r\n\t\t\t\t\tif(ch_i === OPAREN_CODE) {\r\n\t\t\t\t\t\tnode = gobbleGroup();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnode = gobbleIdentifier();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgobbleSpaces();\r\n\t\t\t\t\tch_i = exprICode(index);\r\n\t\t\t\t\twhile(ch_i === PERIOD_CODE || ch_i === OBRACK_CODE || ch_i === OPAREN_CODE) {\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\tif(ch_i === PERIOD_CODE) {\r\n\t\t\t\t\t\t\tgobbleSpaces();\r\n\t\t\t\t\t\t\tnode = {\r\n\t\t\t\t\t\t\t\ttype: MEMBER_EXP,\r\n\t\t\t\t\t\t\t\tcomputed: false,\r\n\t\t\t\t\t\t\t\tobject: node,\r\n\t\t\t\t\t\t\t\tproperty: gobbleIdentifier()\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t} else if(ch_i === OBRACK_CODE) {\r\n\t\t\t\t\t\t\tnode = {\r\n\t\t\t\t\t\t\t\ttype: MEMBER_EXP,\r\n\t\t\t\t\t\t\t\tcomputed: true,\r\n\t\t\t\t\t\t\t\tobject: node,\r\n\t\t\t\t\t\t\t\tproperty: gobbleExpression()\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tgobbleSpaces();\r\n\t\t\t\t\t\t\tch_i = exprICode(index);\r\n\t\t\t\t\t\t\tif(ch_i !== CBRACK_CODE) {\r\n\t\t\t\t\t\t\t\tthrowError('Unclosed [', index);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\t} else if(ch_i === OPAREN_CODE) {\r\n\t\t\t\t\t\t\t// A function call is being made; gobble all the arguments\r\n\t\t\t\t\t\t\tnode = {\r\n\t\t\t\t\t\t\t\ttype: CALL_EXP,\r\n\t\t\t\t\t\t\t\t'arguments': gobbleArguments(CPAREN_CODE),\r\n\t\t\t\t\t\t\t\tcallee: node\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tgobbleSpaces();\r\n\t\t\t\t\t\tch_i = exprICode(index);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn node;\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Responsible for parsing a group of things within parentheses `()`\r\n\t\t\t\t// This function assumes that it needs to gobble the opening parenthesis\r\n\t\t\t\t// and then tries to gobble everything within that parenthesis, assuming\r\n\t\t\t\t// that the next thing it should see is the close parenthesis. If not,\r\n\t\t\t\t// then the expression probably doesn't have a `)`\r\n\t\t\t\tgobbleGroup = function() {\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\tvar node = gobbleExpression();\r\n\t\t\t\t\tgobbleSpaces();\r\n\t\t\t\t\tif(exprICode(index) === CPAREN_CODE) {\r\n\t\t\t\t\t\tindex++;\r\n\t\t\t\t\t\treturn node;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrowError('Unclosed (', index);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Responsible for parsing Array literals `[1, 2, 3]`\r\n\t\t\t\t// This function assumes that it needs to gobble the opening bracket\r\n\t\t\t\t// and then tries to gobble the expressions as arguments.\r\n\t\t\t\tgobbleArray = function() {\r\n\t\t\t\t\tindex++;\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttype: ARRAY_EXP,\r\n\t\t\t\t\t\telements: gobbleArguments(CBRACK_CODE)\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\r\n\t\t\t\tnodes = [], ch_i, node;\r\n\r\n\t\t\twhile(index < length) {\r\n\t\t\t\tch_i = exprICode(index);\r\n\r\n\t\t\t\t// Expressions can be separated by semicolons, commas, or just inferred without any\r\n\t\t\t\t// separators\r\n\t\t\t\tif(ch_i === SEMCOL_CODE || ch_i === COMMA_CODE) {\r\n\t\t\t\t\tindex++; // ignore separators\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Try to gobble each expression individually\r\n\t\t\t\t\tif((node = gobbleExpression())) {\r\n\t\t\t\t\t\tnodes.push(node);\r\n\t\t\t\t\t// If we weren't able to find a binary expression and are out of room, then\r\n\t\t\t\t\t// the expression passed in probably has too much\r\n\t\t\t\t\t} else if(index < length) {\r\n\t\t\t\t\t\tthrowError('Unexpected \"' + exprI(index) + '\"', index);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// If there's only one expression just try returning the expression\r\n\t\t\tif(nodes.length === 1) {\r\n\t\t\t\treturn nodes[0];\r\n\t\t\t} else {\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttype: COMPOUND,\r\n\t\t\t\t\tbody: nodes\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t// To be filled in by the template\r\n\tjsep.version = '0.3.3';\r\n\tjsep.toString = function() { return 'JavaScript Expression Parser (JSEP) v' + jsep.version; };\r\n\r\n\t/**\r\n\t * @method jsep.addUnaryOp\r\n\t * @param {string} op_name The name of the unary op to add\r\n\t * @return jsep\r\n\t */\r\n\tjsep.addUnaryOp = function(op_name) {\r\n\t\tmax_unop_len = Math.max(op_name.length, max_unop_len);\r\n\t\tunary_ops[op_name] = t; return this;\r\n\t};\r\n\r\n\t/**\r\n\t * @method jsep.addBinaryOp\r\n\t * @param {string} op_name The name of the binary op to add\r\n\t * @param {number} precedence The precedence of the binary op (can be a float)\r\n\t * @return jsep\r\n\t */\r\n\tjsep.addBinaryOp = function(op_name, precedence) {\r\n\t\tmax_binop_len = Math.max(op_name.length, max_binop_len);\r\n\t\tbinary_ops[op_name] = precedence;\r\n\t\treturn this;\r\n\t};\r\n\r\n\t/**\r\n\t * @method jsep.addLiteral\r\n\t * @param {string} literal_name The name of the literal to add\r\n\t * @param {*} literal_value The value of the literal\r\n\t * @return jsep\r\n\t */\r\n\tjsep.addLiteral = function(literal_name, literal_value) {\r\n\t\tliterals[literal_name] = literal_value;\r\n\t\treturn this;\r\n\t};\r\n\r\n\t/**\r\n\t * @method jsep.removeUnaryOp\r\n\t * @param {string} op_name The name of the unary op to remove\r\n\t * @return jsep\r\n\t */\r\n\tjsep.removeUnaryOp = function(op_name) {\r\n\t\tdelete unary_ops[op_name];\r\n\t\tif(op_name.length === max_unop_len) {\r\n\t\t\tmax_unop_len = getMaxKeyLen(unary_ops);\r\n\t\t}\r\n\t\treturn this;\r\n\t};\r\n\r\n\t/**\r\n\t * @method jsep.removeAllUnaryOps\r\n\t * @return jsep\r\n\t */\r\n\tjsep.removeAllUnaryOps = function() {\r\n\t\tunary_ops = {};\r\n\t\tmax_unop_len = 0;\r\n\r\n\t\treturn this;\r\n\t};\r\n\r\n\t/**\r\n\t * @method jsep.removeBinaryOp\r\n\t * @param {string} op_name The name of the binary op to remove\r\n\t * @return jsep\r\n\t */\r\n\tjsep.removeBinaryOp = function(op_name) {\r\n\t\tdelete binary_ops[op_name];\r\n\t\tif(op_name.length === max_binop_len) {\r\n\t\t\tmax_binop_len = getMaxKeyLen(binary_ops);\r\n\t\t}\r\n\t\treturn this;\r\n\t};\r\n\r\n\t/**\r\n\t * @method jsep.removeAllBinaryOps\r\n\t * @return jsep\r\n\t */\r\n\tjsep.removeAllBinaryOps = function() {\r\n\t\tbinary_ops = {};\r\n\t\tmax_binop_len = 0;\r\n\r\n\t\treturn this;\r\n\t};\r\n\r\n\t/**\r\n\t * @method jsep.removeLiteral\r\n\t * @param {string} literal_name The name of the literal to remove\r\n\t * @return jsep\r\n\t */\r\n\tjsep.removeLiteral = function(literal_name) {\r\n\t\tdelete literals[literal_name];\r\n\t\treturn this;\r\n\t};\r\n\r\n\t/**\r\n\t * @method jsep.removeAllLiterals\r\n\t * @return jsep\r\n\t */\r\n\tjsep.removeAllLiterals = function() {\r\n\t\tliterals = {};\r\n\r\n\t\treturn this;\r\n\t};\r\n\r\n\t// In desktop environments, have a way to restore the old value for `jsep`\r\n\tif (typeof exports === 'undefined') {\r\n\t\tvar old_jsep = root.jsep;\r\n\t\t// The star of the show! It's a function!\r\n\t\troot.jsep = jsep;\r\n\t\t// And a courteous function willing to move out of the way for other similarly-named objects!\r\n\t\tjsep.noConflict = function() {\r\n\t\t\tif(root.jsep === jsep) {\r\n\t\t\t\troot.jsep = old_jsep;\r\n\t\t\t}\r\n\t\t\treturn jsep;\r\n\t\t};\r\n\t} else {\r\n\t\t// In Node.JS environments\r\n\t\tif (typeof module !== 'undefined' && module.exports) {\r\n\t\t\texports = module.exports = jsep;\r\n\t\t} else {\r\n\t\t\texports.parse = jsep;\r\n\t\t}\r\n\t}\r\n}(this));\r\n",
"'use strict';\n\nvar utils = require('./utils');\n\nmodule.exports = function makeJuiceClient(juiceClient) {\n\njuiceClient.ignoredPseudos = ['hover', 'active', 'focus', 'visited', 'link'];\njuiceClient.widthElements = ['TABLE', 'TD', 'IMG'];\njuiceClient.heightElements = ['TABLE', 'TD', 'IMG'];\njuiceClient.tableElements = ['TABLE', 'TD', 'TH', 'TR', 'TD', 'CAPTION', 'COLGROUP', 'COL', 'THEAD', 'TBODY', 'TFOOT'];\njuiceClient.nonVisualElements = [ 'HEAD', 'TITLE', 'BASE', 'LINK', 'STYLE', 'META', 'SCRIPT', 'NOSCRIPT' ];\njuiceClient.styleToAttribute = {\n 'background-color': 'bgcolor',\n 'background-image': 'background',\n 'text-align': 'align',\n 'vertical-align': 'valign'\n};\njuiceClient.excludedProperties = [];\n\njuiceClient.juiceDocument = juiceDocument;\njuiceClient.inlineDocument = inlineDocument;\n\nfunction inlineDocument($, css, options) {\n\n options = options || {};\n var rules = utils.parseCSS(css);\n var editedElements = [];\n var styleAttributeName = 'style';\n\n if (options.styleAttributeName) {\n styleAttributeName = options.styleAttributeName;\n }\n\n rules.forEach(handleRule);\n editedElements.forEach(setStyleAttrs);\n\n if (options.inlinePseudoElements) {\n editedElements.forEach(inlinePseudoElements);\n }\n\n if (options.applyWidthAttributes) {\n editedElements.forEach(function(el) {\n setDimensionAttrs(el, 'width');\n });\n }\n\n if (options.applyHeightAttributes) {\n editedElements.forEach(function(el) {\n setDimensionAttrs(el, 'height');\n });\n }\n\n if (options.applyAttributesTableElements) {\n editedElements.forEach(setAttributesOnTableElements);\n }\n\n if (options.insertPreservedExtraCss && options.extraCss) {\n var preservedText = utils.getPreservedText(options.extraCss, {\n mediaQueries: options.preserveMediaQueries,\n fontFaces: options.preserveFontFaces\n });\n if (preservedText) {\n var $appendTo = null;\n if (options.insertPreservedExtraCss !== true) {\n $appendTo = $(options.insertPreservedExtraCss);\n } else {\n $appendTo = $('head');\n if (!$appendTo.length) { $appendTo = $('body'); }\n if (!$appendTo.length) { $appendTo = $.root(); }\n }\n\n $appendTo.first().append('<style>' + preservedText + '</style>');\n }\n }\n\n function handleRule(rule) {\n var sel = rule[0];\n var style = rule[1];\n var selector = new utils.Selector(sel);\n var parsedSelector = selector.parsed();\n var pseudoElementType = getPseudoElementType(parsedSelector);\n\n // skip rule if the selector has any pseudos which are ignored\n for (var i = 0; i < parsedSelector.length; ++i) {\n var subSel = parsedSelector[i];\n if (subSel.pseudos) {\n for (var j = 0; j < subSel.pseudos.length; ++j) {\n var subSelPseudo = subSel.pseudos[j];\n if (juiceClient.ignoredPseudos.indexOf(subSelPseudo.name) >= 0) {\n return;\n }\n }\n }\n }\n\n if (pseudoElementType) {\n var last = parsedSelector[parsedSelector.length - 1];\n var pseudos = last.pseudos;\n last.pseudos = filterElementPseudos(last.pseudos);\n sel = parsedSelector.toString();\n last.pseudos = pseudos;\n }\n\n var els;\n try {\n els = $(sel);\n } catch (err) {\n // skip invalid selector\n return;\n }\n\n els.each(function() {\n var el = this;\n\n if (el.name && juiceClient.nonVisualElements.indexOf(el.name.toUpperCase()) >= 0) {\n return;\n }\n\n if (pseudoElementType) {\n var pseudoElPropName = 'pseudo' + pseudoElementType;\n var pseudoEl = el[pseudoElPropName];\n if (!pseudoEl) {\n pseudoEl = el[pseudoElPropName] = $('<span />').get(0);\n pseudoEl.pseudoElementType = pseudoElementType;\n pseudoEl.pseudoElementParent = el;\n el[pseudoElPropName] = pseudoEl;\n }\n el = pseudoEl;\n }\n\n if (!el.styleProps) {\n el.styleProps = {};\n\n // if the element has inline styles, fake selector with topmost specificity\n if ($(el).attr(styleAttributeName)) {\n var cssText = '* { ' + $(el).attr(styleAttributeName) + ' } ';\n addProps(utils.parseCSS(cssText)[0][1], new utils.Selector('<style>', true));\n }\n\n // store reference to an element we need to compile style=\"\" attr for\n editedElements.push(el);\n }\n\n // go through the properties\n function addProps(style, selector) {\n for (var i = 0, l = style.length; i < l; i++) {\n if (style[i].type == 'property') {\n var name = style[i].name;\n var value = style[i].value;\n var important = style[i].value.match(/!important$/) !== null;\n if (important && !options.preserveImportant) value = value.replace(/\\s*!important$/, '');\n // adds line number and column number for the properties as \"additionalPriority\" to the\n // properties because in CSS the position directly affect the priority.\n var additionalPriority = [style[i].position.start.line, style[i].position.start.col];\n var prop = new utils.Property(name, value, selector, important ? 2 : 0, additionalPriority);\n var existing = el.styleProps[name];\n\n // if property name is not in the excluded properties array\n if (juiceClient.excludedProperties.indexOf(name) < 0) {\n if (existing && existing.compare(prop) === prop || !existing) {\n // deleting a property let us change the order (move it to the end in the setStyleAttrs loop)\n if (existing && existing.selector !== selector) {\n delete el.styleProps[name];\n } else if (existing) {\n // make \"prop\" a special composed property.\n prop.nextProp = existing;\n }\n\n el.styleProps[name] = prop;\n }\n }\n }\n }\n }\n\n addProps(style, selector);\n });\n }\n\n function setStyleAttrs(el) {\n var l = Object.keys(el.styleProps).length;\n var props = [];\n // Here we loop each property and make sure to \"expand\"\n // linked \"nextProp\" properties happening when the same property\n // is declared multiple times in the same selector.\n Object.keys(el.styleProps).forEach(function(key) {\n var np = el.styleProps[key];\n while (typeof np !== 'undefined') {\n props.push(np);\n np = np.nextProp;\n }\n });\n // sort properties by their originating selector's specificity so that\n // props like \"padding\" and \"padding-bottom\" are resolved as expected.\n props.sort(function(a, b) {\n return a.compareFunc(b);\n });\n var string = props\n .filter(function(prop) {\n // Content becomes the innerHTML of pseudo elements, not used as a\n // style property\n return prop.prop !== 'content';\n })\n .map(function(prop) {\n return prop.prop + ': ' + prop.value.replace(/[\"]/g, '\\'') + ';';\n })\n .join(' ');\n if (string) {\n $(el).attr(styleAttributeName, string);\n }\n }\n\n function inlinePseudoElements(el) {\n if (el.pseudoElementType && el.styleProps.content) {\n var parsed = parseContent(el.styleProps.content.value);\n if (parsed.img) {\n el.name = 'img';\n $(el).attr('src', parsed.img);\n } else {\n $(el).text(parsed);\n }\n var parent = el.pseudoElementParent;\n if (el.pseudoElementType === 'before') {\n $(parent).prepend(el);\n } else {\n $(parent).append(el);\n }\n }\n }\n\n function setDimensionAttrs(el, dimension) {\n if (!el.name) { return; }\n var elName = el.name.toUpperCase();\n if (juiceClient[dimension + 'Elements'].indexOf(elName) > -1) {\n for (var i in el.styleProps) {\n if (el.styleProps[i].prop === dimension) {\n if (el.styleProps[i].value.match(/px/)) {\n var pxSize = el.styleProps[i].value.replace('px', '');\n $(el).attr(dimension, pxSize);\n return;\n }\n if (juiceClient.tableElements.indexOf(elName) > -1 && el.styleProps[i].value.match(/\\%/)) {\n $(el).attr(dimension, el.styleProps[i].value);\n return;\n }\n }\n }\n }\n }\n\n function extractBackgroundUrl(value) {\n return value.indexOf('url(') !== 0\n ? value\n : value.replace(/^url\\(([\"'])?([^\"']+)\\1\\)$/, '$2');\n }\n\n function setAttributesOnTableElements(el) {\n if (!el.name) { return; }\n var elName = el.name.toUpperCase();\n var styleProps = Object.keys(juiceClient.styleToAttribute);\n\n if (juiceClient.tableElements.indexOf(elName) > -1) {\n for (var i in el.styleProps) {\n if (styleProps.indexOf(el.styleProps[i].prop) > -1) {\n var prop = juiceClient.styleToAttribute[el.styleProps[i].prop];\n var value = el.styleProps[i].value;\n if (prop === 'background') {\n value = extractBackgroundUrl(value)\n }\n $(el).attr(prop, value);\n }\n }\n }\n }\n}\n\nfunction parseContent(content) {\n if (content === 'none' || content === 'normal') {\n return '';\n }\n\n var imageUrlMatch = content.match(/^\\s*url\\s*\\(\\s*(.*?)\\s*\\)\\s*$/i);\n if (imageUrlMatch) {\n var url = imageUrlMatch[1].replace(/^['\"]|['\"]$/g, '');\n return { img: url };\n }\n\n // Naive parsing, assume well-formed value\n content = content.slice(1, content.length - 1);\n // Naive unescape, assume no unicode char codes\n content = content.replace(/\\\\/g, '');\n return content;\n}\n\n// Return \"before\" or \"after\" if the given selector is a pseudo element (e.g.,\n// a::after).\nfunction getPseudoElementType(selector) {\n if (selector.length === 0) {\n return;\n }\n\n var pseudos = selector[selector.length - 1].pseudos;\n if (!pseudos) {\n return;\n }\n\n for (var i = 0; i < pseudos.length; i++) {\n if (isPseudoElementName(pseudos[i])) {\n return pseudos[i].name;\n }\n }\n}\n\nfunction isPseudoElementName(pseudo) {\n return pseudo.name === 'before' || pseudo.name === 'after';\n}\n\nfunction filterElementPseudos(pseudos) {\n return pseudos.filter(function(pseudo) {\n return !isPseudoElementName(pseudo);\n });\n}\n\nfunction juiceDocument($, options) {\n options = utils.getDefaultOptions(options);\n var css = extractCssFromDocument($, options);\n css += '\\n' + options.extraCss;\n inlineDocument($, css, options);\n return $;\n}\n\nfunction getStylesData($, options) {\n var results = [];\n var stylesList = $('style');\n var styleDataList, styleData, styleElement;\n stylesList.each(function() {\n styleElement = this;\n styleDataList = styleElement.childNodes;\n if (styleDataList.length !== 1) {\n return;\n }\n styleData = styleDataList[0].data;\n if (options.applyStyleTags && $(styleElement).attr('data-embed') === undefined) {\n results.push(styleData);\n }\n if (options.removeStyleTags && $(styleElement).attr('data-embed') === undefined) {\n var preservedText = utils.getPreservedText(styleElement.childNodes[0].nodeValue, {\n mediaQueries: options.preserveMediaQueries,\n fontFaces: options.preserveFontFaces\n });\n if (preservedText) {\n styleElement.childNodes[0].nodeValue = preservedText;\n } else {\n $(styleElement).remove();\n }\n }\n $(styleElement).removeAttr('data-embed');\n });\n return results;\n}\n\nfunction extractCssFromDocument($, options) {\n var results = getStylesData($, options);\n var css = results.join('\\n');\n return css;\n}\n\nreturn juiceClient;\n\n};\n",
"'use strict';\n\nmodule.exports = exports = Property;\n\n/**\n * Module dependencies.\n */\n\nvar utils = require('./utils');\n\n/**\n * CSS property constructor.\n *\n * @param {String} property\n * @param {String} value\n * @param {Selector} selector the property originates from\n * @param {Integer} priority 0 for normal properties, 2 for !important properties.\n * @param {Array} additional array of integers representing more detailed priorities (sorting)\n * @api public\n */\n\nfunction Property(prop, value, selector, priority, additionalPriority) {\n this.prop = prop;\n this.value = value;\n this.selector = selector;\n this.priority = priority || 0;\n this.additionalPriority = additionalPriority || [];\n}\n\n/**\n * Compares with another Property based on Selector#specificity.\n *\n * @api public\n */\n\nProperty.prototype.compareFunc = function(property) {\n var a = [];\n a.push.apply(a, this.selector.specificity());\n a.push.apply(a, this.additionalPriority);\n a[0] += this.priority;\n var b = [];\n b.push.apply(b, property.selector.specificity());\n b.push.apply(b, property.additionalPriority);\n b[0] += property.priority;\n return utils.compareFunc(a, b);\n};\n\nProperty.prototype.compare = function(property) {\n var winner = this.compareFunc(property);\n if (winner === 1) {\n return this;\n }\n return property;\n};\n\n\n/**\n * Returns CSS property\n *\n * @api public\n */\n\nProperty.prototype.toString = function() {\n return this.prop + ': ' + this.value.replace(/['\"]+/g, '') + ';';\n};\n",
"'use strict';\n\nvar parser = require('slick/parser');\n\nmodule.exports = exports = Selector;\n\n/**\n * CSS selector constructor.\n *\n * @param {String} selector text\n * @param {Array} optionally, precalculated specificity\n * @api public\n */\n\nfunction Selector(text, styleAttribute) {\n this.text = text;\n this.spec = undefined;\n this.styleAttribute = styleAttribute || false;\n}\n\n/**\n * Get parsed selector.\n *\n * @api public\n */\n\nSelector.prototype.parsed = function() {\n if (!this.tokens) { this.tokens = parse(this.text); }\n return this.tokens;\n};\n\n/**\n * Lazy specificity getter\n *\n * @api public\n */\n\nSelector.prototype.specificity = function() {\n var styleAttribute = this.styleAttribute;\n if (!this.spec) { this.spec = specificity(this.text, this.parsed()); }\n return this.spec;\n\n function specificity(text, parsed) {\n var expressions = parsed || parse(text);\n var spec = [styleAttribute ? 1 : 0, 0, 0, 0];\n var nots = [];\n\n for (var i = 0; i < expressions.length; i++) {\n var expression = expressions[i];\n var pseudos = expression.pseudos;\n\n // id awards a point in the second column\n if (expression.id) { spec[1]++; }\n\n // classes and attributes award a point each in the third column\n if (expression.attributes) { spec[2] += expression.attributes.length; }\n if (expression.classList) { spec[2] += expression.classList.length; }\n\n // tag awards a point in the fourth column\n if (expression.tag && expression.tag !== '*') { spec[3]++; }\n\n // pseudos award a point each in the fourth column\n if (pseudos) {\n spec[3] += pseudos.length;\n\n for (var p = 0; p < pseudos.length; p++) {\n if (pseudos[p].name === 'not') {\n nots.push(pseudos[p].value);\n spec[3]--;\n }\n }\n }\n }\n\n for (var ii = nots.length; ii--;) {\n var not = specificity(nots[ii]);\n for (var jj = 4; jj--;) { spec[jj] += not[jj]; }\n }\n\n return spec;\n }\n};\n\n/**\n * Parses a selector and returns the tokens.\n *\n * @param {String} selector\n * @api private.\n */\n\nfunction parse(text) {\n try {\n return parser(text)[0];\n } catch (e) {\n return [];\n }\n}\n",
"'use strict';\r\n\r\n/**\r\n * Module dependencies.\r\n */\r\n\r\nvar mensch = require('mensch');\r\nvar own = {}.hasOwnProperty;\r\nvar Selector = require('./selector');\r\nvar Property = require('./property');\r\n\r\nexports.Selector = Selector;\r\nexports.Property = Property;\r\n\r\n/**\r\n * Returns an array of the selectors.\r\n *\r\n * @license Sizzle CSS Selector Engine - MIT\r\n * @param {String} selectorText from mensch\r\n * @api public\r\n */\r\n\r\nexports.extract = function extract(selectorText) {\r\n var attr = 0;\r\n var sels = [];\r\n var sel = '';\r\n\r\n for (var i = 0, l = selectorText.length; i < l; i++) {\r\n var c = selectorText.charAt(i);\r\n\r\n if (attr) {\r\n if (']' === c || ')' === c) { attr--; }\r\n sel += c;\r\n } else {\r\n if (',' === c) {\r\n sels.push(sel);\r\n sel = '';\r\n } else {\r\n if ('[' === c || '(' === c) { attr++; }\r\n if (sel.length || (c !== ',' && c !== '\\n' && c !== ' ')) { sel += c; }\r\n }\r\n }\r\n }\r\n\r\n if (sel.length) {\r\n sels.push(sel);\r\n }\r\n\r\n return sels;\r\n};\r\n\r\n/**\r\n * Returns a parse tree for a CSS source.\r\n * If it encounters multiple selectors separated by a comma, it splits the\r\n * tree.\r\n *\r\n * @param {String} css source\r\n * @api public\r\n */\r\n\r\nexports.parseCSS = function(css) {\r\n var parsed = mensch.parse(css, {position: true, comments: true});\r\n var rules = typeof parsed.stylesheet != 'undefined' && parsed.stylesheet.rules ? parsed.stylesheet.rules : [];\r\n var ret = [];\r\n\r\n for (var i = 0, l = rules.length; i < l; i++) {\r\n if (rules[i].type == 'rule') {\r\n var rule = rules[i];\r\n var selectors = rule.selectors;\r\n\r\n for (var ii = 0, ll = selectors.length; ii < ll; ii++) {\r\n ret.push([selectors[ii], rule.declarations]);\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n};\r\n\r\n/**\r\n * Returns preserved text for a CSS source.\r\n *\r\n * @param {String} css source\r\n * @param {Object} options\r\n * @api public\r\n */\r\n\r\nexports.getPreservedText = function(css, options) {\r\n var parsed = mensch.parse(css, {position: true, comments: true});\r\n var rules = typeof parsed.stylesheet != 'undefined' && parsed.stylesheet.rules ? parsed.stylesheet.rules : [];\r\n var preserved = [];\r\n var lastStart = null;\r\n\r\n for (var i = rules.length - 1; i >= 0; i--) {\r\n if ((options.fontFaces && rules[i].type === 'font-face') ||\r\n (options.mediaQueries && rules[i].type === 'media')) {\r\n preserved.unshift(\r\n mensch.stringify(\r\n { stylesheet: { rules: [ rules[i] ] }},\r\n { comments: false, indentation: ' ' }\r\n )\r\n );\r\n }\r\n lastStart = rules[i].position.start;\r\n }\r\n\r\n if (preserved.length === 0) {\r\n return false;\r\n }\r\n return '\\n' + preserved.join('\\n') + '\\n';\r\n};\r\n\r\nexports.normalizeLineEndings = function(text) {\r\n return text.replace(/\\r\\n/g, '\\n').replace(/\\n/g, '\\r\\n');\r\n};\r\n\r\n\r\n/**\r\n * Compares two specificity vectors, returning the winning one.\r\n *\r\n * @param {Array} vector a\r\n * @param {Array} vector b\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nexports.compareFunc = function(a, b) {\r\n var min = Math.min(a.length, b.length);\r\n for (var i = 0; i < min; i++) {\r\n if (a[i] === b[i]) { continue; }\r\n if (a[i] > b[i]) { return 1; }\r\n return -1;\r\n }\r\n\r\n return a.length - b.length;\r\n};\r\n\r\nexports.compare = function(a, b) {\r\n return exports.compareFunc(a, b) == 1 ? a : b;\r\n};\r\n\r\nexports.extend = function(obj, src) {\r\n for (var key in src) {\r\n if (own.call(src, key)) {\r\n obj[key] = src[key];\r\n }\r\n }\r\n return obj;\r\n};\r\n\r\nexports.getDefaultOptions = function(options) {\r\n var result = exports.extend({\r\n extraCss: '',\r\n insertPreservedExtraCss: true,\r\n applyStyleTags: true,\r\n removeStyleTags: true,\r\n preserveMediaQueries: true,\r\n preserveFontFaces: true,\r\n applyWidthAttributes: true,\r\n applyHeightAttributes: true,\r\n applyAttributesTableElements: true,\r\n url: ''\r\n }, options);\r\n\r\n result.webResources = result.webResources || {};\r\n\r\n return result;\r\n};\r\n",
"// knockout-sortable 1.0.0 | (c) 2016 Ryan Niemeyer | http://www.opensource.org/licenses/mit-license\n;(function(factory) {\n if (typeof define === \"function\" && define.amd) {\n // AMD anonymous module\n define([\"knockout\", \"jquery\", \"jquery-ui/ui/widgets/sortable\", \"jquery-ui/ui/widgets/draggable\"], factory);\n } else if (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\") {\n // CommonJS module\n var ko = (typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),\n jQuery = (typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null);\n (typeof window !== \"undefined\" ? window['jQuery']['ui']['sortable'] : typeof global !== \"undefined\" ? global['jQuery']['ui']['sortable'] : null);\n (typeof window !== \"undefined\" ? window['jQuery']['ui']['draggable'] : typeof global !== \"undefined\" ? global['jQuery']['ui']['draggable'] : null);\n factory(ko, jQuery);\n } else {\n // No module loader (plain <script> tag) - put directly in global namespace\n factory(window.ko, window.jQuery);\n }\n})(function(ko, $) {\n var ITEMKEY = \"ko_sortItem\",\n INDEXKEY = \"ko_sourceIndex\",\n LISTKEY = \"ko_sortList\",\n PARENTKEY = \"ko_parentList\",\n DRAGKEY = \"ko_dragItem\",\n unwrap = ko.utils.unwrapObservable,\n dataGet = ko.utils.domData.get,\n dataSet = ko.utils.domData.set,\n version = $.ui && $.ui.version,\n //1.8.24 included a fix for how events were triggered in nested sortables. indexOf checks will fail if version starts with that value (0 vs. -1)\n hasNestedSortableFix = version && version.indexOf(\"1.6.\") && version.indexOf(\"1.7.\") && (version.indexOf(\"1.8.\") || version === \"1.8.24\");\n\n //internal afterRender that adds meta-data to children\n var addMetaDataAfterRender = function(elements, data) {\n ko.utils.arrayForEach(elements, function(element) {\n if (element.nodeType === 1) {\n dataSet(element, ITEMKEY, data);\n dataSet(element, PARENTKEY, dataGet(element.parentNode, LISTKEY));\n }\n });\n };\n\n //prepare the proper options for the template binding\n var prepareTemplateOptions = function(valueAccessor, dataName) {\n var result = {},\n options = unwrap(valueAccessor()) || {},\n actualAfterRender;\n\n //build our options to pass to the template engine\n if (options.data) {\n result[dataName] = options.data;\n result.name = options.template;\n } else {\n result[dataName] = valueAccessor();\n }\n\n ko.utils.arrayForEach([\"afterAdd\", \"afterRender\", \"as\", \"beforeRemove\", \"includeDestroyed\", \"templateEngine\", \"templateOptions\", \"nodes\"], function (option) {\n if (options.hasOwnProperty(option)) {\n result[option] = options[option];\n } else if (ko.bindingHandlers.sortable.hasOwnProperty(option)) {\n result[option] = ko.bindingHandlers.sortable[option];\n }\n });\n\n //use an afterRender function to add meta-data\n if (dataName === \"foreach\") {\n if (result.afterRender) {\n //wrap the existing function, if it was passed\n actualAfterRender = result.afterRender;\n result.afterRender = function(element, data) {\n addMetaDataAfterRender.call(data, element, data);\n actualAfterRender.call(data, element, data);\n };\n } else {\n result.afterRender = addMetaDataAfterRender;\n }\n }\n\n //return options to pass to the template binding\n return result;\n };\n\n var updateIndexFromDestroyedItems = function(index, items) {\n var unwrapped = unwrap(items);\n\n if (unwrapped) {\n for (var i = 0; i < index; i++) {\n //add one for every destroyed item we find before the targetIndex in the target array\n if (unwrapped[i] && unwrap(unwrapped[i]._destroy)) {\n index++;\n }\n }\n }\n\n return index;\n };\n\n //remove problematic leading/trailing whitespace from templates\n var stripTemplateWhitespace = function(element, name) {\n var templateSource,\n templateElement;\n\n //process named templates\n if (name) {\n templateElement = document.getElementById(name);\n if (templateElement) {\n templateSource = new ko.templateSources.domElement(templateElement);\n templateSource.text($.trim(templateSource.text()));\n }\n }\n else {\n //remove leading/trailing non-elements from anonymous templates\n $(element).contents().each(function() {\n if (this && this.nodeType !== 1) {\n element.removeChild(this);\n }\n });\n }\n };\n\n //connect items with observableArrays\n ko.bindingHandlers.sortable = {\n init: function(element, valueAccessor, allBindingsAccessor, data, context) {\n var $element = $(element),\n value = unwrap(valueAccessor()) || {},\n templateOptions = prepareTemplateOptions(valueAccessor, \"foreach\"),\n sortable = {},\n startActual, updateActual;\n\n stripTemplateWhitespace(element, templateOptions.name);\n\n //build a new object that has the global options with overrides from the binding\n $.extend(true, sortable, ko.bindingHandlers.sortable);\n if (value.options && sortable.options) {\n ko.utils.extend(sortable.options, value.options);\n delete value.options;\n }\n ko.utils.extend(sortable, value);\n\n //if allowDrop is an observable or a function, then execute it in a computed observable\n if (sortable.connectClass && (ko.isObservable(sortable.allowDrop) || typeof sortable.allowDrop == \"function\")) {\n ko.computed({\n read: function() {\n var value = unwrap(sortable.allowDrop),\n shouldAdd = typeof value == \"function\" ? value.call(this, templateOptions.foreach) : value;\n ko.utils.toggleDomNodeCssClass(element, sortable.connectClass, shouldAdd);\n },\n disposeWhenNodeIsRemoved: element\n }, this);\n } else {\n ko.utils.toggleDomNodeCssClass(element, sortable.connectClass, sortable.allowDrop);\n }\n\n //wrap the template binding\n ko.bindingHandlers.template.init(element, function() { return templateOptions; }, allBindingsAccessor, data, context);\n\n //keep a reference to start/update functions that might have been passed in\n startActual = sortable.options.start;\n updateActual = sortable.options.update;\n\n //ensure draggable table row cells maintain their width while dragging (unless a helper is provided)\n if ( !sortable.options.helper ) {\n sortable.options.helper = function(e, ui) {\n if (ui.is(\"tr\")) {\n ui.children().each(function() {\n $(this).width($(this).width());\n });\n }\n return ui;\n };\n }\n\n //initialize sortable binding after template binding has rendered in update function\n var createTimeout = setTimeout(function() {\n var dragItem;\n var originalReceive = sortable.options.receive;\n\n $element.sortable(ko.utils.extend(sortable.options, {\n start: function(event, ui) {\n //track original index\n var el = ui.item[0];\n dataSet(el, INDEXKEY, ko.utils.arrayIndexOf(ui.item.parent().children(), el));\n\n //make sure that fields have a chance to update model\n ui.item.find(\"input:focus\").change();\n if (startActual) {\n startActual.apply(this, arguments);\n }\n },\n receive: function(event, ui) {\n //optionally apply an existing receive handler\n if (typeof originalReceive === \"function\") {\n originalReceive.call(this, event, ui);\n }\n\n dragItem = dataGet(ui.item[0], DRAGKEY);\n if (dragItem) {\n //copy the model item, if a clone option is provided\n if (dragItem.clone) {\n dragItem = dragItem.clone();\n }\n\n //configure a handler to potentially manipulate item before drop\n if (sortable.dragged) {\n dragItem = sortable.dragged.call(this, dragItem, event, ui) || dragItem;\n }\n }\n },\n update: function(event, ui) {\n var sourceParent, targetParent, sourceIndex, targetIndex, arg,\n el = ui.item[0],\n parentEl = ui.item.parent()[0],\n item = dataGet(el, ITEMKEY) || dragItem;\n\n if (!item) {\n $(el).remove();\n }\n dragItem = null;\n\n //make sure that moves only run once, as update fires on multiple containers\n if (item && (this === parentEl) || (!hasNestedSortableFix && $.contains(this, parentEl))) {\n //identify parents\n sourceParent = dataGet(el, PARENTKEY);\n sourceIndex = dataGet(el, INDEXKEY);\n targetParent = dataGet(el.parentNode, LISTKEY);\n targetIndex = ko.utils.arrayIndexOf(ui.item.parent().children(), el);\n\n //take destroyed items into consideration\n if (!templateOptions.includeDestroyed) {\n sourceIndex = updateIndexFromDestroyedItems(sourceIndex, sourceParent);\n targetIndex = updateIndexFromDestroyedItems(targetIndex, targetParent);\n }\n\n //build up args for the callbacks\n if (sortable.beforeMove || sortable.afterMove) {\n arg = {\n item: item,\n sourceParent: sourceParent,\n sourceParentNode: sourceParent && ui.sender || el.parentNode,\n sourceIndex: sourceIndex,\n targetParent: targetParent,\n targetIndex: targetIndex,\n cancelDrop: false\n };\n\n //execute the configured callback prior to actually moving items\n if (sortable.beforeMove) {\n sortable.beforeMove.call(this, arg, event, ui);\n }\n }\n\n //call cancel on the correct list, so KO can take care of DOM manipulation\n if (sourceParent) {\n $(sourceParent === targetParent ? this : ui.sender || this).sortable(\"cancel\");\n }\n //for a draggable item just remove the element\n else {\n $(el).remove();\n }\n\n //if beforeMove told us to cancel, then we are done\n if (arg && arg.cancelDrop) {\n return;\n }\n\n //if the strategy option is unset or false, employ the order strategy involving removal and insertion of items\n if (!sortable.hasOwnProperty(\"strategyMove\") || sortable.strategyMove === false) {\n //do the actual move\n if (targetIndex >= 0) {\n if (sourceParent) {\n sourceParent.splice(sourceIndex, 1);\n\n //if using deferred updates plugin, force updates\n if (ko.processAllDeferredBindingUpdates) {\n ko.processAllDeferredBindingUpdates();\n }\n\n //if using deferred updates on knockout 3.4, force updates\n if (ko.options && ko.options.deferUpdates) {\n ko.tasks.runEarly();\n }\n }\n\n targetParent.splice(targetIndex, 0, item);\n }\n\n //rendering is handled by manipulating the observableArray; ignore dropped element\n dataSet(el, ITEMKEY, null);\n }\n else { //employ the strategy of moving items\n if (targetIndex >= 0) {\n if (sourceParent) {\n if (sourceParent !== targetParent) {\n // moving from one list to another\n\n sourceParent.splice(sourceIndex, 1);\n targetParent.splice(targetIndex, 0, item);\n\n //rendering is handled by manipulating the observableArray; ignore dropped element\n dataSet(el, ITEMKEY, null);\n ui.item.remove();\n }\n else {\n // moving within same list\n var underlyingList = unwrap(sourceParent);\n\n // notify 'beforeChange' subscribers\n if (sourceParent.valueWillMutate) {\n sourceParent.valueWillMutate();\n }\n\n // move from source index ...\n underlyingList.splice(sourceIndex, 1);\n // ... to target index\n underlyingList.splice(targetIndex, 0, item);\n\n // notify subscribers\n if (sourceParent.valueHasMutated) {\n sourceParent.valueHasMutated();\n }\n }\n }\n else {\n // drop new element from outside\n targetParent.splice(targetIndex, 0, item);\n\n //rendering is handled by manipulating the observableArray; ignore dropped element\n dataSet(el, ITEMKEY, null);\n ui.item.remove();\n }\n }\n }\n\n //if using deferred updates plugin, force updates\n if (ko.processAllDeferredBindingUpdates) {\n ko.processAllDeferredBindingUpdates();\n }\n\n //allow binding to accept a function to execute after moving the item\n if (sortable.afterMove) {\n sortable.afterMove.call(this, arg, event, ui);\n }\n }\n\n if (updateActual) {\n updateActual.apply(this, arguments);\n }\n },\n connectWith: sortable.connectClass ? \".\" + sortable.connectClass : false\n }));\n\n //handle enabling/disabling sorting\n if (sortable.isEnabled !== undefined) {\n ko.computed({\n read: function() {\n $element.sortable(unwrap(sortable.isEnabled) ? \"enable\" : \"disable\");\n },\n disposeWhenNodeIsRemoved: element\n });\n }\n }, 0);\n\n //handle disposal\n ko.utils.domNodeDisposal.addDisposeCallback(element, function() {\n //only call destroy if sortable has been created\n if ($element.data(\"ui-sortable\") || $element.data(\"sortable\")) {\n $element.sortable(\"destroy\");\n }\n\n ko.utils.toggleDomNodeCssClass(element, sortable.connectClass, false);\n\n //do not create the sortable if the element has been removed from DOM\n clearTimeout(createTimeout);\n });\n\n return { 'controlsDescendantBindings': true };\n },\n update: function(element, valueAccessor, allBindingsAccessor, data, context) {\n var templateOptions = prepareTemplateOptions(valueAccessor, \"foreach\");\n\n //attach meta-data\n dataSet(element, LISTKEY, templateOptions.foreach);\n\n //call template binding's update with correct options\n ko.bindingHandlers.template.update(element, function() { return templateOptions; }, allBindingsAccessor, data, context);\n },\n connectClass: 'ko_container',\n allowDrop: true,\n afterMove: null,\n beforeMove: null,\n options: {}\n };\n\n //create a draggable that is appropriate for dropping into a sortable\n ko.bindingHandlers.draggable = {\n init: function(element, valueAccessor, allBindingsAccessor, data, context) {\n var value = unwrap(valueAccessor()) || {},\n options = value.options || {},\n draggableOptions = ko.utils.extend({}, ko.bindingHandlers.draggable.options),\n templateOptions = prepareTemplateOptions(valueAccessor, \"data\"),\n connectClass = value.connectClass || ko.bindingHandlers.draggable.connectClass,\n isEnabled = value.isEnabled !== undefined ? value.isEnabled : ko.bindingHandlers.draggable.isEnabled;\n\n value = \"data\" in value ? value.data : value;\n\n //set meta-data\n dataSet(element, DRAGKEY, value);\n\n //override global options with override options passed in\n ko.utils.extend(draggableOptions, options);\n\n //setup connection to a sortable\n draggableOptions.connectToSortable = connectClass ? \".\" + connectClass : false;\n\n //initialize draggable\n $(element).draggable(draggableOptions);\n\n //handle enabling/disabling sorting\n if (isEnabled !== undefined) {\n ko.computed({\n read: function() {\n $(element).draggable(unwrap(isEnabled) ? \"enable\" : \"disable\");\n },\n disposeWhenNodeIsRemoved: element\n });\n }\n\n //handle disposal\n ko.utils.domNodeDisposal.addDisposeCallback(element, function() {\n $(element).draggable(\"destroy\");\n });\n\n return ko.bindingHandlers.template.init(element, function() { return templateOptions; }, allBindingsAccessor, data, context);\n },\n update: function(element, valueAccessor, allBindingsAccessor, data, context) {\n var templateOptions = prepareTemplateOptions(valueAccessor, \"data\");\n\n return ko.bindingHandlers.template.update(element, function() { return templateOptions; }, allBindingsAccessor, data, context);\n },\n connectClass: ko.bindingHandlers.sortable.connectClass,\n options: {\n helper: \"clone\"\n }\n };\n});\n",
"/*! ko-reactor v1.4.0\n * The MIT License (MIT)\n * Copyright (c) 2018 Ziad Jeeroburkhan */\n!function(e){\"function\"==typeof require&&\"object\"==typeof exports&&\"object\"==typeof module?e((typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null)):\"function\"==typeof define&&define.amd?define([\"knockout\"],e):e(window.ko)}(function(e){e.subscribable.fn.watch=function(t,a,n,r){var o=typeof t;return\"boolean\"===o||\"undefined\"===o?e.watch(this,{enabled:!1!==t}):\"function\"!==o||e.isSubscribable(t)?e.watch(t,a,n,r||this):e.watch(this,a||{},t,r||this),this},e.watch=function(t,a,n,r){function o(c,u,f,s,b,h){if(c&&0!==a.depth&&(-1===a.depth||f.length<(a.depth||1))){if(a.watchedOnly&&!c.watchable&&c!=t)return;if(!1!==a.enabled&&!0!==a.enabled||(c.watchable=a.enabled),!1===c.watchable)return;!0===a.seal&&(c.watchable=!1);var d=typeof c;if(\"object\"===d||\"function\"===d){if(c._watcher===r)return;if(a.hide&&e.utils.arrayIndexOf(a.hide,c)>-1)return;var p=[].concat(f,u&&u!==t?u:[]);if(\"function\"!==d){if(\"[object Object]\"===Object.prototype.toString.call(c))e.utils.objectForEach(c,function(t,n){if(n=a.getter?a.getter.call(r,p,c,t):n){if(a.wrap){var i=Object.prototype.toString.call(n);\"[object Function]\"!==i&&\"[object Object]\"!==i&&(a.beforeWrap&&!1===a.beforeWrap.call(r,p,c,n)||(n=c[t]=\"[object Array]\"===i?e.observableArray(n):e.observable(n)))}a.unloop&&(n._watcher=s?void 0:r);var l=o(n,b?null:c,p,s,null,t);a.tagFields&&void 0===n._fieldName&&(l||\"parentsOnly\"!==a.tagFields&&\"function\"==typeof n||\"object\"==typeof n)&&(n._fieldName=t)}});else if(!0!==a.hideArrays)for(var y=0;y<c.length;y++)o(c[y],b?null:c,p,s);return!0}if(\"function\"==typeof c.notifySubscribers&&n){if(!0===a.enabled&&!1===c.watchable)return;if(s||!a.beforeWatch||!1!==a.beforeWatch.call(r,p,c,h)){var v=\"function\"==typeof c.pop;if(s?i(c):l(c,v,p,b),v)return o(c(),b?null:c,p,s,!0),!0;if(!0!==a.hideWrappedValues)return o(c(),b?null:c,p,s,!0)}}}}}function i(e){var t=e[c];if(!t)throw\"Subscriptions field (.\"+c+\") not defined for observable child \"+(e._fieldName||\"\");if(t.change)for(n=t.change.length-1;n>=0;n--)t.change[n]._watcher===r&&t.change[n].dispose();if(t.beforeChange&&(a.mutable||a.oldValues>0))for(n=t.beforeChange.length-1;n>=0;n--)t.beforeChange[n]._watcher===r&&t.beforeChange[n].dispose();if(t.arrayChange)for(var n=t.arrayChange.length-1;n>=0;n--)t.arrayChange[n]._watcher===r&&t.arrayChange[n].dispose()}function l(t,i,l,c){i?t.subscribe(function(i){var u;!1===a.splitArrayChanges&&void 0!==(u=n.call(r,l,t,i))&&r(u),e.utils.arrayForEach(i,function(e){if(!1!==a.splitArrayChanges){var i=n.call(r,l,t,e);void 0!==i&&r(i)}e.moved||(!1===a.async?o(e.value,c?null:t,l,\"deleted\"===e.status):setTimeout(function(){o(e.value,c?null:t,l,\"deleted\"===e.status)}))})},void 0,\"arrayChange\")._watcher=r:(t.subscribe(function(){if(!1!==t.watchable){var e=n.call(r,l,t);void 0!==e&&r(e),a.mutable&&\"object\"==typeof t()&&(!1===a.async?o(t(),c?null:t,l,!1,!0):setTimeout(function(){o(t(),c?null:t,l,!1,!0)}))}},null,\"change\")._watcher=r,(a.oldValues>0||a.mutable)&&(t.subscribe(function(e){if(a.oldValues>0){var n=t.oldValues?t.oldValues:t.oldValues=[];for(n.unshift(e);n.length>a.oldValues;)n.pop()}a.mutable&&\"object\"==typeof e&&o(e,c?null:t,l,!0,!0)},null,\"beforeChange\")._watcher=r))}\"function\"==typeof a&&(r=r||n,n=a,a={}),r=r||this;var c;switch(\"function\"==typeof e.subscription||e.version){case!0:c=\"_subscriptions\";break;case\"3.0.0\":c=\"F\";break;case\"3.1.0\":c=\"H\";break;case\"3.2.0\":c=\"M\";break;case\"3.3.0\":c=\"G\";break;case\"3.4.0\":case\"3.4.1\":c=\"K\";break;case\"3.4.2\":c=\"F\";break;case\"3.5.0-beta\":c=\"S\";break;default:throw\"Unsupported Knockout version. Only v3.0.0 to v3.5.0-beta are supported when minified. Current version is \"+e.version}return\"function\"!=typeof t||e.isSubscribable(t)?(o(t,null,[]),{dispose:function(){o(t,null,[],!0)}}):e.computed(t,n,a)}});window.foo = \"1.4.0\";",
"module.exports = {\r\n lex : require('./lib/lexer'),\r\n parse: require('./lib/parser'),\r\n stringify: require('./lib/stringify')\r\n};\r\n",
"exports = module.exports = debug;\r\n\r\nfunction debug(label) {\r\n return _debug.bind(null, label);\r\n}\r\n\r\nfunction _debug(label) {\r\n var args = [].slice.call(arguments, 1);\r\n args.unshift('[' + label + ']');\r\n process.stderr.write(args.join(' ') + '\\n');\r\n}",
"var DEBUG = false; // `true` to print debugging info.\r\nvar TIMER = false; // `true` to time calls to `lex()` and print the results.\r\n\r\nvar debug = require('./debug')('lex');\r\n\r\nexports = module.exports = lex;\r\n\r\n/**\r\n * Convert a CSS string into an array of lexical tokens.\r\n *\r\n * @param {String} css CSS\r\n * @returns {Array} lexical tokens\r\n */\r\nfunction lex(css) {\r\n var start; // Debug timer start.\r\n\r\n var buffer = ''; // Character accumulator\r\n var ch; // Current character\r\n var column = 0; // Current source column number\r\n var cursor = -1; // Current source cursor position\r\n var depth = 0; // Current nesting depth\r\n var line = 1; // Current source line number\r\n var state = 'before-selector'; // Current state\r\n var stack = [state]; // State stack\r\n var token = {}; // Current token\r\n var tokens = []; // Token accumulator\r\n\r\n // Supported @-rules, in roughly descending order of usage probability.\r\n var atRules = [\r\n 'media',\r\n 'keyframes',\r\n { name: '-webkit-keyframes', type: 'keyframes', prefix: '-webkit-' },\r\n { name: '-moz-keyframes', type: 'keyframes', prefix: '-moz-' },\r\n { name: '-ms-keyframes', type: 'keyframes', prefix: '-ms-' },\r\n { name: '-o-keyframes', type: 'keyframes', prefix: '-o-' },\r\n 'font-face',\r\n { name: 'import', state: 'before-at-value' },\r\n { name: 'charset', state: 'before-at-value' },\r\n 'supports',\r\n 'viewport',\r\n { name: 'namespace', state: 'before-at-value' },\r\n 'document',\r\n { name: '-moz-document', type: 'document', prefix: '-moz-' },\r\n 'page'\r\n ];\r\n\r\n // -- Functions ------------------------------------------------------------\r\n\r\n /**\r\n * Advance the character cursor and return the next character.\r\n *\r\n * @returns {String} The next character.\r\n */\r\n function getCh() {\r\n skip();\r\n return css[cursor];\r\n }\r\n\r\n /**\r\n * Return the state at the given index in the stack.\r\n * The stack is LIFO so indexing is from the right.\r\n *\r\n * @param {Number} [index=0] Index to return.\r\n * @returns {String} state\r\n */\r\n function getState(index) {\r\n return index ? stack[stack.length - 1 - index] : state;\r\n }\r\n\r\n /**\r\n * Look ahead for a string beginning from the next position. The string\r\n * being looked for must start at the next position.\r\n *\r\n * @param {String} str The string to look for.\r\n * @returns {Boolean} Whether the string was found.\r\n */\r\n function isNextString(str) {\r\n var start = cursor + 1;\r\n return (str === css.slice(start, start + str.length));\r\n }\r\n\r\n /**\r\n * Find the start position of a substring beginning from the next\r\n * position. The string being looked for may begin anywhere.\r\n *\r\n * @param {String} str The substring to look for.\r\n * @returns {Number|false} The position, or `false` if not found.\r\n */\r\n function find(str) {\r\n var pos = css.slice(cursor).indexOf(str);\r\n\r\n return pos > 0 ? pos : false;\r\n }\r\n\r\n /**\r\n * Determine whether a character is next.\r\n *\r\n * @param {String} ch Character.\r\n * @returns {Boolean} Whether the character is next.\r\n */\r\n function isNextChar(ch) {\r\n return ch === peek(1);\r\n }\r\n\r\n /**\r\n * Return the character at the given cursor offset. The offset is relative\r\n * to the cursor, so negative values move backwards.\r\n *\r\n * @param {Number} [offset=1] Cursor offset.\r\n * @returns {String} Character.\r\n */\r\n function peek(offset) {\r\n return css[cursor + (offset || 1)];\r\n }\r\n\r\n /**\r\n * Remove the current state from the stack and set the new current state.\r\n *\r\n * @returns {String} The removed state.\r\n */\r\n function popState() {\r\n var removed = stack.pop();\r\n state = stack[stack.length - 1];\r\n\r\n return removed;\r\n }\r\n\r\n /**\r\n * Set the current state and add it to the stack.\r\n *\r\n * @param {String} newState The new state.\r\n * @returns {Number} The new stack length.\r\n */\r\n function pushState(newState) {\r\n state = newState;\r\n stack.push(state);\r\n\r\n return stack.length;\r\n }\r\n\r\n /**\r\n * Replace the current state with a new state.\r\n *\r\n * @param {String} newState The new state.\r\n * @returns {String} The replaced state.\r\n */\r\n function replaceState(newState) {\r\n var previousState = state;\r\n stack[stack.length - 1] = state = newState;\r\n\r\n return previousState;\r\n }\r\n\r\n /**\r\n * Move the character cursor. Positive numbers move the cursor forward.\r\n * Negative numbers are not supported!\r\n *\r\n * @param {Number} [n=1] Number of characters to skip.\r\n */\r\n function skip(n) {\r\n if ((n || 1) == 1) {\r\n if (css[cursor] == '\\n') {\r\n line++;\r\n column = 1;\r\n } else {\r\n column++;\r\n }\r\n cursor++;\r\n } else {\r\n var skipStr = css.slice(cursor, cursor + n).split('\\n');\r\n if (skipStr.length > 1) {\r\n line += skipStr.length - 1;\r\n column = 1;\r\n }\r\n column += skipStr[skipStr.length - 1].length;\r\n cursor = cursor + n;\r\n }\r\n }\r\n\r\n /**\r\n * Add the current token to the pile and reset the buffer.\r\n */\r\n function addToken() {\r\n token.end = {\r\n line: line,\r\n col: column\r\n };\r\n\r\n DEBUG && debug('addToken:', JSON.stringify(token, null, 2));\r\n\r\n tokens.push(token);\r\n\r\n buffer = '';\r\n token = {};\r\n }\r\n\r\n /**\r\n * Set the current token.\r\n *\r\n * @param {String} type Token type.\r\n */\r\n function initializeToken(type) {\r\n token = {\r\n type: type,\r\n start: {\r\n line: line,\r\n col : column\r\n }\r\n };\r\n }\r\n\r\n // -- Main Loop ------------------------------------------------------------\r\n\r\n /*\r\n The main loop is a state machine that reads in one character at a time,\r\n and determines what to do based on the current state and character.\r\n This is implemented as a series of nested `switch` statements and the\r\n case orders have been mildly optimized based on rough probabilities\r\n calculated by processing a small sample of real-world CSS.\r\n\r\n Further optimization (such as a dispatch table) shouldn't be necessary\r\n since the total number of cases is very low.\r\n */\r\n\r\n TIMER && (start = Date.now());\r\n\r\n while (ch = getCh()) {\r\n DEBUG && debug(ch, getState());\r\n\r\n // column += 1;\r\n\r\n switch (ch) {\r\n // Space\r\n case ' ':\r\n switch (getState()) {\r\n case 'selector':\r\n case 'value':\r\n case 'value-paren':\r\n case 'at-group':\r\n case 'at-value':\r\n case 'comment':\r\n case 'double-string':\r\n case 'single-string':\r\n buffer += ch;\r\n break;\r\n }\r\n break;\r\n\r\n // Newline or tab\r\n case '\\n':\r\n case '\\t':\r\n case '\\r':\r\n case '\\f':\r\n switch (getState()) {\r\n case 'value':\r\n case 'value-paren':\r\n case 'at-group':\r\n case 'comment':\r\n case 'single-string':\r\n case 'double-string':\r\n case 'selector':\r\n buffer += ch;\r\n break;\r\n\r\n case 'at-value':\r\n // Tokenize an @-rule if a semi-colon was omitted.\r\n if ('\\n' === ch) {\r\n token.value = buffer.trim();\r\n addToken();\r\n popState();\r\n }\r\n break;\r\n }\r\n\r\n // if ('\\n' === ch) {\r\n // column = 0;\r\n // line += 1;\r\n // }\r\n break;\r\n\r\n case ':':\r\n switch (getState()) {\r\n case 'name':\r\n token.name = buffer.trim();\r\n buffer = '';\r\n\r\n replaceState('before-value');\r\n break;\r\n\r\n case 'before-selector':\r\n buffer += ch;\r\n\r\n initializeToken('selector');\r\n pushState('selector');\r\n break;\r\n\r\n case 'before-value':\r\n replaceState('value');\r\n buffer += ch;\r\n break;\r\n\r\n default:\r\n buffer += ch;\r\n break;\r\n }\r\n break;\r\n\r\n case ';':\r\n switch (getState()) {\r\n case 'name':\r\n case 'before-value':\r\n case 'value':\r\n // Tokenize a declaration\r\n // if value is empty skip the declaration\r\n if (buffer.trim().length > 0) {\r\n token.value = buffer.trim(),\r\n addToken();\r\n }\r\n replaceState('before-name');\r\n break;\r\n\r\n case 'value-paren':\r\n // Insignificant semi-colon\r\n buffer += ch;\r\n break;\r\n\r\n case 'at-value':\r\n // Tokenize an @-rule\r\n token.value = buffer.trim();\r\n addToken();\r\n popState();\r\n break;\r\n\r\n case 'before-name':\r\n // Extraneous semi-colon\r\n break;\r\n\r\n default:\r\n buffer += ch;\r\n break;\r\n }\r\n break;\r\n\r\n case '{':\r\n switch (getState()) {\r\n case 'selector':\r\n // If the sequence is `\\{` then assume that the brace should be escaped.\r\n if (peek(-1) === '\\\\') {\r\n buffer += ch;\r\n break;\r\n }\r\n\r\n // Tokenize a selector\r\n token.text = buffer.trim();\r\n addToken();\r\n replaceState('before-name');\r\n depth = depth + 1;\r\n break;\r\n\r\n case 'at-group':\r\n // Tokenize an @-group\r\n token.name = buffer.trim();\r\n\r\n // XXX: @-rules are starting to get hairy\r\n switch (token.type) {\r\n case 'font-face':\r\n case 'viewport' :\r\n case 'page' :\r\n pushState('before-name');\r\n break;\r\n\r\n default:\r\n pushState('before-selector');\r\n }\r\n\r\n addToken();\r\n depth = depth + 1;\r\n break;\r\n\r\n case 'name':\r\n case 'at-rule':\r\n // Tokenize a declaration or an @-rule\r\n token.name = buffer.trim();\r\n addToken();\r\n pushState('before-name');\r\n depth = depth + 1;\r\n break;\r\n\r\n case 'comment':\r\n case 'double-string':\r\n case 'single-string':\r\n // Ignore braces in comments and strings\r\n buffer += ch;\r\n break;\r\n case 'before-value':\r\n replaceState('value');\r\n buffer += ch;\r\n break;\r\n }\r\n\r\n break;\r\n\r\n case '}':\r\n switch (getState()) {\r\n case 'before-name':\r\n case 'name':\r\n case 'before-value':\r\n case 'value':\r\n // If the buffer contains anything, it is a value\r\n if (buffer) {\r\n token.value = buffer.trim();\r\n }\r\n\r\n // If the current token has a name and a value it should be tokenized.\r\n if (token.name && token.value) {\r\n addToken();\r\n }\r\n\r\n // Leave the block\r\n initializeToken('end');\r\n addToken();\r\n popState();\r\n\r\n // We might need to leave again.\r\n // XXX: What about 3 levels deep?\r\n if ('at-group' === getState()) {\r\n initializeToken('at-group-end');\r\n addToken();\r\n popState();\r\n }\r\n \r\n if (depth > 0) {\r\n depth = depth - 1;\r\n }\r\n\r\n break;\r\n\r\n case 'at-group':\r\n case 'before-selector':\r\n case 'selector':\r\n // If the sequence is `\\}` then assume that the brace should be escaped.\r\n if (peek(-1) === '\\\\') {\r\n buffer += ch;\r\n break;\r\n }\r\n\r\n if (depth > 0) {\r\n // Leave block if in an at-group\r\n if ('at-group' === getState(1)) {\r\n initializeToken('at-group-end');\r\n addToken();\r\n }\r\n }\r\n\r\n if (depth > 1) {\r\n popState();\r\n }\r\n\r\n if (depth > 0) {\r\n depth = depth - 1;\r\n }\r\n break;\r\n\r\n case 'double-string':\r\n case 'single-string':\r\n case 'comment':\r\n // Ignore braces in comments and strings.\r\n buffer += ch;\r\n break;\r\n }\r\n\r\n break;\r\n\r\n // Strings\r\n case '\"':\r\n case \"'\":\r\n switch (getState()) {\r\n case 'double-string':\r\n if ('\"' === ch && '\\\\' !== peek(-1)) {\r\n popState();\r\n }\r\n break;\r\n\r\n case 'single-string':\r\n if (\"'\" === ch && '\\\\' !== peek(-1)) {\r\n popState();\r\n }\r\n break;\r\n\r\n case 'before-at-value':\r\n replaceState('at-value');\r\n pushState('\"' === ch ? 'double-string' : 'single-string');\r\n break;\r\n\r\n case 'before-value':\r\n replaceState('value');\r\n pushState('\"' === ch ? 'double-string' : 'single-string');\r\n break;\r\n\r\n case 'comment':\r\n // Ignore strings within comments.\r\n break;\r\n\r\n default:\r\n if ('\\\\' !== peek(-1)) {\r\n pushState('\"' === ch ? 'double-string' : 'single-string');\r\n }\r\n }\r\n\r\n buffer += ch;\r\n break;\r\n\r\n // Comments\r\n case '/':\r\n switch (getState()) {\r\n case 'comment':\r\n case 'double-string':\r\n case 'single-string':\r\n // Ignore\r\n buffer += ch;\r\n break;\r\n\r\n case 'before-value':\r\n case 'selector':\r\n case 'name':\r\n case 'value':\r\n if (isNextChar('*')) {\r\n // Ignore comments in selectors, properties and values. They are\r\n // difficult to represent in the AST.\r\n var pos = find('*/');\r\n\r\n if (pos) {\r\n skip(pos + 1);\r\n }\r\n } else {\r\n if (getState() == 'before-value') replaceState('value');\r\n buffer += ch;\r\n }\r\n break;\r\n\r\n default:\r\n if (isNextChar('*')) {\r\n // Create a comment token\r\n initializeToken('comment');\r\n pushState('comment');\r\n skip();\r\n }\r\n else {\r\n buffer += ch;\r\n }\r\n break;\r\n }\r\n break;\r\n\r\n // Comment end or universal selector\r\n case '*':\r\n switch (getState()) {\r\n case 'comment':\r\n if (isNextChar('/')) {\r\n // Tokenize a comment\r\n token.text = buffer; // Don't trim()!\r\n skip();\r\n addToken();\r\n popState();\r\n }\r\n else {\r\n buffer += ch;\r\n }\r\n break;\r\n\r\n case 'before-selector':\r\n buffer += ch;\r\n initializeToken('selector');\r\n pushState('selector');\r\n break;\r\n\r\n case 'before-value':\r\n replaceState('value');\r\n buffer += ch;\r\n break;\r\n\r\n default:\r\n buffer += ch;\r\n }\r\n break;\r\n\r\n // @-rules\r\n case '@':\r\n switch (getState()) {\r\n case 'comment':\r\n case 'double-string':\r\n case 'single-string':\r\n buffer += ch;\r\n break;\r\n case 'before-value':\r\n replaceState('value');\r\n buffer += ch;\r\n break;\r\n\r\n default:\r\n // Iterate over the supported @-rules and attempt to tokenize one.\r\n var tokenized = false;\r\n var name;\r\n var rule;\r\n\r\n for (var j = 0, len = atRules.length; !tokenized && j < len; ++j) {\r\n rule = atRules[j];\r\n name = rule.name || rule;\r\n\r\n if (!isNextString(name)) { continue; }\r\n\r\n tokenized = true;\r\n\r\n initializeToken(name);\r\n pushState(rule.state || 'at-group');\r\n skip(name.length);\r\n\r\n if (rule.prefix) {\r\n token.prefix = rule.prefix;\r\n }\r\n\r\n if (rule.type) {\r\n token.type = rule.type;\r\n }\r\n }\r\n\r\n if (!tokenized) {\r\n // Keep on truckin' America!\r\n buffer += ch;\r\n }\r\n break;\r\n }\r\n break;\r\n\r\n // Parentheses are tracked to disambiguate semi-colons, such as within a\r\n // data URI.\r\n case '(':\r\n switch (getState()) {\r\n case 'value':\r\n pushState('value-paren');\r\n break;\r\n case 'before-value':\r\n replaceState('value');\r\n break;\r\n }\r\n\r\n buffer += ch;\r\n break;\r\n\r\n case ')':\r\n switch (getState()) {\r\n case 'value-paren':\r\n popState();\r\n break;\r\n case 'before-value':\r\n replaceState('value');\r\n break;\r\n }\r\n\r\n buffer += ch;\r\n break;\r\n\r\n default:\r\n switch (getState()) {\r\n case 'before-selector':\r\n initializeToken('selector');\r\n pushState('selector');\r\n break;\r\n\r\n case 'before-name':\r\n initializeToken('property');\r\n replaceState('name');\r\n break;\r\n\r\n case 'before-value':\r\n replaceState('value');\r\n break;\r\n\r\n case 'before-at-value':\r\n replaceState('at-value');\r\n break;\r\n }\r\n\r\n buffer += ch;\r\n break;\r\n }\r\n }\r\n\r\n TIMER && debug('ran in', (Date.now() - start) + 'ms');\r\n\r\n return tokens;\r\n}\r\n",
"var DEBUG = false; // `true` to print debugging info.\r\nvar TIMER = false; // `true` to time calls to `parse()` and print the results.\r\n\r\nvar debug = require('./debug')('parse');\r\nvar lex = require('./lexer');\r\n\r\nexports = module.exports = parse;\r\n\r\nvar _comments; // Whether comments are allowed.\r\nvar _depth; // Current block nesting depth.\r\nvar _position; // Whether to include line/column position.\r\nvar _tokens; // Array of lexical tokens.\r\n\r\n/**\r\n * Convert a CSS string or array of lexical tokens into a `stringify`-able AST.\r\n *\r\n * @param {String} css CSS string or array of lexical token\r\n * @param {Object} [options]\r\n * @param {Boolean} [options.comments=false] allow comment nodes in the AST\r\n * @returns {Object} `stringify`-able AST\r\n */\r\nfunction parse(css, options) {\r\n var start; // Debug timer start.\r\n\r\n options || (options = {});\r\n _comments = !!options.comments;\r\n _position = !!options.position;\r\n\r\n _depth = 0;\r\n\r\n // Operate on a copy of the given tokens, or the lex()'d CSS string.\r\n _tokens = Array.isArray(css) ? css.slice() : lex(css);\r\n\r\n var rule;\r\n var rules = [];\r\n var token;\r\n\r\n TIMER && (start = Date.now());\r\n\r\n while ((token = next())) {\r\n rule = parseToken(token);\r\n rule && rules.push(rule);\r\n }\r\n\r\n TIMER && debug('ran in', (Date.now() - start) + 'ms');\r\n\r\n return {\r\n type: \"stylesheet\",\r\n stylesheet: {\r\n rules: rules\r\n }\r\n };\r\n}\r\n\r\n// -- Functions --------------------------------------------------------------\r\n\r\n/**\r\n * Build an AST node from a lexical token.\r\n *\r\n * @param {Object} token lexical token\r\n * @param {Object} [override] object hash of properties that override those\r\n * already in the token, or that will be added to the token.\r\n * @returns {Object} AST node\r\n */\r\nfunction astNode(token, override) {\r\n override || (override = {});\r\n\r\n var key;\r\n var keys = ['type', 'name', 'value'];\r\n var node = {};\r\n\r\n // Avoiding [].forEach for performance reasons.\r\n for (var i = 0; i < keys.length; ++i) {\r\n key = keys[i];\r\n\r\n if (token[key]) {\r\n node[key] = override[key] || token[key];\r\n }\r\n }\r\n\r\n keys = Object.keys(override);\r\n\r\n for (i = 0; i < keys.length; ++i) {\r\n key = keys[i];\r\n\r\n if (!node[key]) {\r\n node[key] = override[key];\r\n }\r\n }\r\n\r\n if (_position) {\r\n node.position = {\r\n start: token.start,\r\n end: token.end\r\n };\r\n }\r\n\r\n DEBUG && debug('astNode:', JSON.stringify(node, null, 2));\r\n\r\n return node;\r\n}\r\n\r\n/**\r\n * Remove a lexical token from the stack and return the removed token.\r\n *\r\n * @returns {Object} lexical token\r\n */\r\nfunction next() {\r\n var token = _tokens.shift();\r\n DEBUG && debug('next:', JSON.stringify(token, null, 2));\r\n return token;\r\n}\r\n\r\n// -- Parse* Functions ---------------------------------------------------------\r\n\r\n/**\r\n * Convert an @-group lexical token to an AST node.\r\n *\r\n * @param {Object} token @-group lexical token\r\n * @returns {Object} @-group AST node\r\n */\r\nfunction parseAtGroup(token) {\r\n _depth = _depth + 1;\r\n\r\n // As the @-group token is assembled, relevant token values are captured here\r\n // temporarily. They will later be used as `tokenize()` overrides.\r\n var overrides = {};\r\n\r\n switch (token.type) {\r\n case 'font-face':\r\n case 'viewport' :\r\n overrides.declarations = parseDeclarations();\r\n break;\r\n\r\n case 'page':\r\n overrides.prefix = token.prefix;\r\n overrides.declarations = parseDeclarations();\r\n break;\r\n\r\n default:\r\n overrides.prefix = token.prefix;\r\n overrides.rules = parseRules();\r\n }\r\n\r\n return astNode(token, overrides);\r\n}\r\n\r\n/**\r\n * Convert an @import lexical token to an AST node.\r\n *\r\n * @param {Object} token @import lexical token\r\n * @returns {Object} @import AST node\r\n */\r\nfunction parseAtImport(token) {\r\n return astNode(token);\r\n}\r\n\r\n/**\r\n * Convert an @charset token to an AST node.\r\n *\r\n * @param {Object} token @charset lexical token\r\n * @returns {Object} @charset node\r\n */\r\nfunction parseCharset(token) {\r\n return astNode(token);\r\n}\r\n\r\n/**\r\n * Convert a comment token to an AST Node.\r\n *\r\n * @param {Object} token comment lexical token\r\n * @returns {Object} comment node\r\n */\r\nfunction parseComment(token) {\r\n return astNode(token, {text: token.text});\r\n}\r\n\r\nfunction parseNamespace(token) {\r\n return astNode(token);\r\n}\r\n\r\n/**\r\n * Convert a property lexical token to a property AST node.\r\n *\r\n * @returns {Object} property node\r\n */\r\nfunction parseProperty(token) {\r\n return astNode(token);\r\n}\r\n\r\n/**\r\n * Convert a selector lexical token to a selector AST node.\r\n *\r\n * @param {Object} token selector lexical token\r\n * @returns {Object} selector node\r\n */\r\nfunction parseSelector(token) {\r\n function trim(str) {\r\n return str.trim();\r\n }\r\n\r\n return astNode(token, {\r\n type: 'rule',\r\n selectors: token.text.split(',').map(trim),\r\n declarations: parseDeclarations(token)\r\n });\r\n}\r\n\r\n/**\r\n * Convert a lexical token to an AST node.\r\n *\r\n * @returns {Object|undefined} AST node\r\n */\r\nfunction parseToken(token) {\r\n switch (token.type) {\r\n // Cases are listed in roughly descending order of probability.\r\n case 'property': return parseProperty(token);\r\n\r\n case 'selector': return parseSelector(token);\r\n\r\n case 'at-group-end': _depth = _depth - 1; return;\r\n\r\n case 'media' :\r\n case 'keyframes' :return parseAtGroup(token);\r\n\r\n case 'comment': if (_comments) { return parseComment(token); } break;\r\n\r\n case 'charset': return parseCharset(token);\r\n case 'import': return parseAtImport(token);\r\n\r\n case 'namespace': return parseNamespace(token);\r\n\r\n case 'font-face':\r\n case 'supports' :\r\n case 'viewport' :\r\n case 'document' :\r\n case 'page' : return parseAtGroup(token);\r\n }\r\n\r\n DEBUG && debug('parseToken: unexpected token:', JSON.stringify(token));\r\n}\r\n\r\n// -- Parse Helper Functions ---------------------------------------------------\r\n\r\n/**\r\n * Iteratively parses lexical tokens from the stack into AST nodes until a\r\n * conditional function returns `false`, at which point iteration terminates\r\n * and any AST nodes collected are returned.\r\n *\r\n * @param {Function} conditionFn\r\n * @param {Object} token the lexical token being parsed\r\n * @returns {Boolean} `true` if the token should be parsed, `false` otherwise\r\n * @return {Array} AST nodes\r\n */\r\nfunction parseTokensWhile(conditionFn) {\r\n var node;\r\n var nodes = [];\r\n var token;\r\n\r\n while ((token = next()) && (conditionFn && conditionFn(token))) {\r\n node = parseToken(token);\r\n node && nodes.push(node);\r\n }\r\n\r\n // Place an unused non-`end` lexical token back onto the stack.\r\n if (token && token.type !== 'end') {\r\n _tokens.unshift(token);\r\n }\r\n\r\n return nodes;\r\n}\r\n\r\n/**\r\n * Convert a series of tokens into a sequence of declaration AST nodes.\r\n *\r\n * @returns {Array} declaration nodes\r\n */\r\nfunction parseDeclarations() {\r\n return parseTokensWhile(function (token) {\r\n return (token.type === 'property' || token.type === 'comment');\r\n });\r\n}\r\n\r\n/**\r\n * Convert a series of tokens into a sequence of rule nodes.\r\n *\r\n * @returns {Array} rule nodes\r\n */\r\nfunction parseRules() {\r\n return parseTokensWhile(function () { return _depth; });\r\n}\r\n",
"var DEBUG = false; // `true` to print debugging info.\r\nvar TIMER = false; // `true` to time calls to `stringify()` and print the results.\r\n\r\nvar debug = require('./debug')('stringify');\r\n\r\nvar _comments; // Whether comments are allowed in the stringified CSS.\r\nvar _compress; // Whether the stringified CSS should be compressed.\r\nvar _indentation; // Indentation option value.\r\nvar _n; // Compression-aware newline character.\r\nvar _s; // Compression-aware space character.\r\n\r\nexports = module.exports = stringify;\r\n\r\n/**\r\n * Convert a `stringify`-able AST into a CSS string.\r\n *\r\n * @param {Object} `stringify`-able AST\r\n * @param {Object} [options]\r\n * @param {Boolean} [options.comments=false] allow comments in the CSS\r\n * @param {Boolean} [options.compress=false] compress whitespace\r\n * @param {String} [options.indentation=''] indentation sequence\r\n * @returns {String} CSS\r\n */\r\nfunction stringify(ast, options) {\r\n var start; // Debug timer start.\r\n\r\n options || (options = {});\r\n _indentation = options.indentation || '';\r\n _compress = !!options.compress;\r\n _comments = !!options.comments;\r\n\r\n if (_compress) {\r\n _n = _s = '';\r\n } else {\r\n _n = '\\n';\r\n _s = ' ';\r\n }\r\n\r\n TIMER && (start = Date.now());\r\n\r\n var css = reduce(ast.stylesheet.rules, stringifyNode).join('\\n').trim();\r\n\r\n TIMER && debug('ran in', (Date.now() - start) + 'ms');\r\n\r\n return css;\r\n}\r\n\r\n// -- Functions --------------------------------------------------------------\r\n\r\n/**\r\n * Modify the indentation level, or return a compression-aware sequence of\r\n * spaces equal to the current indentation level.\r\n *\r\n * @param {Number} [level=undefined] indentation level modifier\r\n * @returns {String} sequence of spaces\r\n */\r\nfunction indent(level) {\r\n this.level || (this.level = 1);\r\n\r\n if (level) {\r\n this.level += level;\r\n return;\r\n }\r\n\r\n if (_compress) { return ''; }\r\n\r\n return Array(this.level).join(_indentation || '');\r\n}\r\n\r\n// -- Stringify Functions ------------------------------------------------------\r\n\r\n/**\r\n * Stringify an @-rule AST node.\r\n *\r\n * Use `stringifyAtGroup()` when dealing with @-groups that may contain blocks\r\n * such as @media.\r\n *\r\n * @param {String} type @-rule type. E.g., import, charset\r\n * @returns {String} Stringified @-rule\r\n */\r\nfunction stringifyAtRule(node) {\r\n return '@' + node.type + ' ' + node.value + ';' + _n;\r\n}\r\n\r\n/**\r\n * Stringify an @-group AST node.\r\n *\r\n * Use `stringifyAtRule()` when dealing with @-rules that may not contain blocks\r\n * such as @import.\r\n *\r\n * @param {Object} node @-group AST node\r\n * @returns {String}\r\n */\r\nfunction stringifyAtGroup(node) {\r\n var label = '';\r\n var prefix = node.prefix || '';\r\n\r\n if (node.name) {\r\n label = ' ' + node.name;\r\n }\r\n\r\n // FIXME: @-rule conditional logic is leaking everywhere.\r\n var chomp = node.type !== 'page';\r\n\r\n return '@' + prefix + node.type + label + _s + stringifyBlock(node, chomp) + _n;\r\n}\r\n\r\n/**\r\n * Stringify a comment AST node.\r\n *\r\n * @param {Object} node comment AST node\r\n * @returns {String}\r\n */\r\nfunction stringifyComment(node) {\r\n if (!_comments) { return ''; }\r\n\r\n return '/*' + (node.text || '') + '*/' + _n;\r\n}\r\n\r\n/**\r\n * Stringify a rule AST node.\r\n *\r\n * @param {Object} node rule AST node\r\n * @returns {String}\r\n */\r\nfunction stringifyRule(node) {\r\n var label;\r\n\r\n if (node.selectors) {\r\n label = node.selectors.join(',' + _n);\r\n } else {\r\n label = '@' + node.type;\r\n label += node.name ? ' ' + node.name : '';\r\n }\r\n\r\n return indent() + label + _s + stringifyBlock(node) + _n;\r\n}\r\n\r\n\r\n// -- Stringify Helper Functions -----------------------------------------------\r\n\r\n/**\r\n * Reduce an array by applying a function to each item and retaining the truthy\r\n * results.\r\n *\r\n * When `item.type` is `'comment'` `stringifyComment` will be applied instead.\r\n *\r\n * @param {Array} items array to reduce\r\n * @param {Function} fn function to call for each item in the array\r\n * @returns {Mixed} Truthy values will be retained, falsy values omitted\r\n * @returns {Array} retained results\r\n */\r\nfunction reduce(items, fn) {\r\n return items.reduce(function (results, item) {\r\n var result = (item.type === 'comment') ? stringifyComment(item) : fn(item);\r\n result && results.push(result);\r\n return results;\r\n }, []);\r\n}\r\n\r\n/**\r\n * Stringify an AST node with the assumption that it represents a block of\r\n * declarations or other @-group contents.\r\n *\r\n * @param {Object} node AST node\r\n * @returns {String}\r\n */\r\n// FIXME: chomp should not be a magic boolean parameter\r\nfunction stringifyBlock(node, chomp) {\r\n var children = node.declarations;\r\n var fn = stringifyDeclaration;\r\n\r\n if (node.rules) {\r\n children = node.rules;\r\n fn = stringifyRule;\r\n }\r\n\r\n children = stringifyChildren(children, fn);\r\n children && (children = _n + children + (chomp ? '' : _n));\r\n\r\n return '{' + children + indent() + '}';\r\n}\r\n\r\n/**\r\n * Stringify an array of child AST nodes by calling the given stringify function\r\n * once for each child, and concatenating the results.\r\n *\r\n * @param {Array} children `node.rules` or `node.declarations`\r\n * @param {Function} fn stringify function\r\n * @returns {String}\r\n */\r\nfunction stringifyChildren(children, fn) {\r\n if (!children) { return ''; }\r\n\r\n indent(1);\r\n var results = reduce(children, fn);\r\n indent(-1);\r\n\r\n if (!results.length) { return ''; }\r\n\r\n return results.join(_n);\r\n}\r\n\r\n/**\r\n * Stringify a declaration AST node.\r\n *\r\n * @param {Object} node declaration AST node\r\n * @returns {String}\r\n */\r\nfunction stringifyDeclaration(node) {\r\n if (node.type === 'property') {\r\n return stringifyProperty(node);\r\n }\r\n\r\n DEBUG && debug('stringifyDeclaration: unexpected node:', JSON.stringify(node));\r\n}\r\n\r\n/**\r\n * Stringify an AST node.\r\n *\r\n * @param {Object} node AST node\r\n * @returns {String}\r\n */\r\nfunction stringifyNode(node) {\r\n switch (node.type) {\r\n // Cases are listed in roughly descending order of probability.\r\n case 'rule': return stringifyRule(node);\r\n\r\n case 'media' :\r\n case 'keyframes': return stringifyAtGroup(node);\r\n\r\n case 'comment': return stringifyComment(node);\r\n\r\n case 'import' :\r\n case 'charset' :\r\n case 'namespace': return stringifyAtRule(node);\r\n\r\n case 'font-face':\r\n case 'supports' :\r\n case 'viewport' :\r\n case 'document' :\r\n case 'page' : return stringifyAtGroup(node);\r\n }\r\n\r\n DEBUG && debug('stringifyNode: unexpected node: ' + JSON.stringify(node));\r\n}\r\n\r\n/**\r\n * Stringify an AST property node.\r\n *\r\n * @param {Object} node AST property node\r\n * @returns {String}\r\n */\r\nfunction stringifyProperty(node) {\r\n var name = node.name ? node.name + ':' + _s : '';\r\n\r\n return indent() + name + node.value + ';';\r\n}\r\n",
"// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n",
"/*\nSlick Parser\n - originally created by the almighty Thomas Aylott <@subtlegradient> (http://subtlegradient.com)\n*/\"use strict\"\n\n// Notable changes from Slick.Parser 1.0.x\n\n// The parser now uses 2 classes: Expressions and Expression\n// `new Expressions` produces an array-like object containing a list of Expression objects\n// - Expressions::toString() produces a cleaned up expressions string\n// `new Expression` produces an array-like object\n// - Expression::toString() produces a cleaned up expression string\n// The only exposed method is parse, which produces a (cached) `new Expressions` instance\n// parsed.raw is no longer present, use .toString()\n// parsed.expression is now useless, just use the indices\n// parsed.reverse() has been removed for now, due to its apparent uselessness\n// Other changes in the Expressions object:\n// - classNames are now unique, and save both escaped and unescaped values\n// - attributes now save both escaped and unescaped values\n// - pseudos now save both escaped and unescaped values\n\nvar escapeRe = /([-.*+?^${}()|[\\]\\/\\\\])/g,\n unescapeRe = /\\\\/g\n\nvar escape = function(string){\n // XRegExp v2.0.0-beta-3\n // « https://github.com/slevithan/XRegExp/blob/master/src/xregexp.js\n return (string + \"\").replace(escapeRe, '\\\\$1')\n}\n\nvar unescape = function(string){\n return (string + \"\").replace(unescapeRe, '')\n}\n\nvar slickRe = RegExp(\n/*\n#!/usr/bin/env ruby\nputs \"\\t\\t\" + DATA.read.gsub(/\\(\\?x\\)|\\s+#.*$|\\s+|\\\\$|\\\\n/,'')\n__END__\n \"(?x)^(?:\\\n \\\\s* ( , ) \\\\s* # Separator \\n\\\n | \\\\s* ( <combinator>+ ) \\\\s* # Combinator \\n\\\n | ( \\\\s+ ) # CombinatorChildren \\n\\\n | ( <unicode>+ | \\\\* ) # Tag \\n\\\n | \\\\# ( <unicode>+ ) # ID \\n\\\n | \\\\. ( <unicode>+ ) # ClassName \\n\\\n | # Attribute \\n\\\n \\\\[ \\\n \\\\s* (<unicode1>+) (?: \\\n \\\\s* ([*^$!~|]?=) (?: \\\n \\\\s* (?:\\\n ([\\\"']?)(.*?)\\\\9 \\\n )\\\n ) \\\n )? \\\\s* \\\n \\\\](?!\\\\]) \\n\\\n | :+ ( <unicode>+ )(?:\\\n \\\\( (?:\\\n (?:([\\\"'])([^\\\\12]*)\\\\12)|((?:\\\\([^)]+\\\\)|[^()]*)+)\\\n ) \\\\)\\\n )?\\\n )\"\n*/\n\"^(?:\\\\s*(,)\\\\s*|\\\\s*(<combinator>+)\\\\s*|(\\\\s+)|(<unicode>+|\\\\*)|\\\\#(<unicode>+)|\\\\.(<unicode>+)|\\\\[\\\\s*(<unicode1>+)(?:\\\\s*([*^$!~|]?=)(?:\\\\s*(?:([\\\"']?)(.*?)\\\\9)))?\\\\s*\\\\](?!\\\\])|(:+)(<unicode>+)(?:\\\\((?:(?:([\\\"'])([^\\\\13]*)\\\\13)|((?:\\\\([^)]+\\\\)|[^()]*)+))\\\\))?)\"\n .replace(/<combinator>/, '[' + escape(\">+~`!@$%^&={}\\\\;</\") + ']')\n .replace(/<unicode>/g, '(?:[\\\\w\\\\u00a1-\\\\uFFFF-]|\\\\\\\\[^\\\\s0-9a-f])')\n .replace(/<unicode1>/g, '(?:[:\\\\w\\\\u00a1-\\\\uFFFF-]|\\\\\\\\[^\\\\s0-9a-f])')\n)\n\n// Part\n\nvar Part = function Part(combinator){\n this.combinator = combinator || \" \"\n this.tag = \"*\"\n}\n\nPart.prototype.toString = function(){\n\n if (!this.raw){\n\n var xpr = \"\", k, part\n\n xpr += this.tag || \"*\"\n if (this.id) xpr += \"#\" + this.id\n if (this.classes) xpr += \".\" + this.classList.join(\".\")\n if (this.attributes) for (k = 0; part = this.attributes[k++];){\n xpr += \"[\" + part.name + (part.operator ? part.operator + '\"' + part.value + '\"' : '') + \"]\"\n }\n if (this.pseudos) for (k = 0; part = this.pseudos[k++];){\n xpr += \":\" + part.name\n if (part.value) xpr += \"(\" + part.value + \")\"\n }\n\n this.raw = xpr\n\n }\n\n return this.raw\n}\n\n// Expression\n\nvar Expression = function Expression(){\n this.length = 0\n}\n\nExpression.prototype.toString = function(){\n\n if (!this.raw){\n\n var xpr = \"\"\n\n for (var j = 0, bit; bit = this[j++];){\n if (j !== 1) xpr += \" \"\n if (bit.combinator !== \" \") xpr += bit.combinator + \" \"\n xpr += bit\n }\n\n this.raw = xpr\n\n }\n\n return this.raw\n}\n\nvar replacer = function(\n rawMatch,\n\n separator,\n combinator,\n combinatorChildren,\n\n tagName,\n id,\n className,\n\n attributeKey,\n attributeOperator,\n attributeQuote,\n attributeValue,\n\n pseudoMarker,\n pseudoClass,\n pseudoQuote,\n pseudoClassQuotedValue,\n pseudoClassValue\n){\n\n var expression, current\n\n if (separator || !this.length){\n expression = this[this.length++] = new Expression\n if (separator) return ''\n }\n\n if (!expression) expression = this[this.length - 1]\n\n if (combinator || combinatorChildren || !expression.length){\n current = expression[expression.length++] = new Part(combinator)\n }\n\n if (!current) current = expression[expression.length - 1]\n\n if (tagName){\n\n current.tag = unescape(tagName)\n\n } else if (id){\n\n current.id = unescape(id)\n\n } else if (className){\n\n var unescaped = unescape(className)\n\n var classes = current.classes || (current.classes = {})\n if (!classes[unescaped]){\n classes[unescaped] = escape(className)\n var classList = current.classList || (current.classList = [])\n classList.push(unescaped)\n classList.sort()\n }\n\n } else if (pseudoClass){\n\n pseudoClassValue = pseudoClassValue || pseudoClassQuotedValue\n\n ;(current.pseudos || (current.pseudos = [])).push({\n type : pseudoMarker.length == 1 ? 'class' : 'element',\n name : unescape(pseudoClass),\n escapedName : escape(pseudoClass),\n value : pseudoClassValue ? unescape(pseudoClassValue) : null,\n escapedValue : pseudoClassValue ? escape(pseudoClassValue) : null\n })\n\n } else if (attributeKey){\n\n attributeValue = attributeValue ? escape(attributeValue) : null\n\n ;(current.attributes || (current.attributes = [])).push({\n operator : attributeOperator,\n name : unescape(attributeKey),\n escapedName : escape(attributeKey),\n value : attributeValue ? unescape(attributeValue) : null,\n escapedValue : attributeValue ? escape(attributeValue) : null\n })\n\n }\n\n return ''\n\n}\n\n// Expressions\n\nvar Expressions = function Expressions(expression){\n this.length = 0\n\n var self = this\n\n var original = expression, replaced\n\n while (expression){\n replaced = expression.replace(slickRe, function(){\n return replacer.apply(self, arguments)\n })\n if (replaced === expression) throw new Error(original + ' is an invalid expression')\n expression = replaced\n }\n}\n\nExpressions.prototype.toString = function(){\n if (!this.raw){\n var expressions = []\n for (var i = 0, expression; expression = this[i++];) expressions.push(expression)\n this.raw = expressions.join(\", \")\n }\n\n return this.raw\n}\n\nvar cache = {}\n\nvar parse = function(expression){\n if (expression == null) return null\n expression = ('' + expression).replace(/^\\s+|\\s+$/g, '')\n return cache[expression] || (cache[expression] = new Expressions(expression))\n}\n\nmodule.exports = parse\n",
"// TinyColor v1.4.1\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n trimRight = /\\s+$/,\n tinyCounter = 0,\n mathRound = Math.round,\n mathMin = Math.min,\n mathMax = Math.max,\n mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n color = (color) ? color : '';\n opts = opts || { };\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n\n var rgb = inputToRGB(color);\n this._originalInput = color,\n this._r = rgb.r,\n this._g = rgb.g,\n this._b = rgb.b,\n this._a = rgb.a,\n this._roundA = mathRound(100*this._a) / 100,\n this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) { this._r = mathRound(this._r); }\n if (this._g < 1) { this._g = mathRound(this._g); }\n if (this._b < 1) { this._b = mathRound(this._b); }\n\n this._ok = rgb.ok;\n this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n isDark: function() {\n return this.getBrightness() < 128;\n },\n isLight: function() {\n return !this.isDark();\n },\n isValid: function() {\n return this._ok;\n },\n getOriginalInput: function() {\n return this._originalInput;\n },\n getFormat: function() {\n return this._format;\n },\n getAlpha: function() {\n return this._a;\n },\n getBrightness: function() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r/255;\n GsRGB = rgb.g/255;\n BsRGB = rgb.b/255;\n\n if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n },\n setAlpha: function(value) {\n this._a = boundAlpha(value);\n this._roundA = mathRound(100*this._a) / 100;\n return this;\n },\n toHsv: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n },\n toHsvString: function() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n return (this._a == 1) ?\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n },\n toHsl: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n },\n toHslString: function() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n return (this._a == 1) ?\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n },\n toHex: function(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function(allow3Char) {\n return '#' + this.toHex(allow3Char);\n },\n toHex8: function(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function(allow4Char) {\n return '#' + this.toHex8(allow4Char);\n },\n toRgb: function() {\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n },\n toRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function() {\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n },\n toPercentageRgbString: function() {\n return (this._a == 1) ?\n \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function() {\n if (this._a === 0) {\n return \"transparent\";\n }\n\n if (this._a < 1) {\n return false;\n }\n\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function(secondColor) {\n var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n },\n toString: function(format) {\n var formatSet = !!format;\n format = format || this._format;\n\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n\n return formattedString || this.toHexString();\n },\n clone: function() {\n return tinycolor(this.toString());\n },\n\n _applyModification: function(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function() {\n return this._applyModification(lighten, arguments);\n },\n brighten: function() {\n return this._applyModification(brighten, arguments);\n },\n darken: function() {\n return this._applyModification(darken, arguments);\n },\n desaturate: function() {\n return this._applyModification(desaturate, arguments);\n },\n saturate: function() {\n return this._applyModification(saturate, arguments);\n },\n greyscale: function() {\n return this._applyModification(greyscale, arguments);\n },\n spin: function() {\n return this._applyModification(spin, arguments);\n },\n\n _applyCombination: function(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function() {\n return this._applyCombination(analogous, arguments);\n },\n complement: function() {\n return this._applyCombination(complement, arguments);\n },\n monochromatic: function() {\n return this._applyCombination(monochromatic, arguments);\n },\n splitcomplement: function() {\n return this._applyCombination(splitcomplement, arguments);\n },\n triad: function() {\n return this._applyCombination(triad, arguments);\n },\n tetrad: function() {\n return this._applyCombination(tetrad, arguments);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n if (typeof color == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n }\n else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n\n if (typeof color == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n\n a = boundAlpha(a);\n\n return {\n ok: ok,\n format: color.format || format,\n r: mathMin(255, mathMax(rgb.r, 0)),\n g: mathMin(255, mathMax(rgb.g, 0)),\n b: mathMin(255, mathMax(rgb.b, 0)),\n a: a\n };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if(max == min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n\n h /= 6;\n }\n\n return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n\n function hue2rgb(p, q, t) {\n if(t < 0) t += 1;\n if(t > 1) t -= 1;\n if(t < 1/6) return p + (q - p) * 6 * t;\n if(t < 1/2) return q;\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n }\n\n if(s === 0) {\n r = g = b = l; // achromatic\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\n var h, s, v = max;\n\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if(max == min) {\n h = 0; // achromatic\n }\n else {\n switch(max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n var hex = [\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16)),\n pad2(convertDecimalToHex(a))\n ];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(mathRound(r).toString(16)),\n pad2(mathRound(g).toString(16)),\n pad2(mathRound(b).toString(16))\n ];\n\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) { return false; }\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n return tinycolor.fromRatio({\n r: mathRandom(),\n g: mathRandom(),\n b: mathRandom()\n });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var rgb = tinycolor(color).toRgb();\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n amount = (amount === 0) ? 0 : (amount || 10);\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\n\nfunction triad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction tetrad(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n ];\n}\n\nfunction splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [\n tinycolor(color),\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n ];\n}\n\nfunction analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\n\nfunction monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h, s = hsv.s, v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n\n while (results--) {\n ret.push(tinycolor({ h: h, s: s, v: v}));\n v = (v + modification) % 1;\n }\n\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n amount = (amount === 0) ? 0 : (amount || 50);\n\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n\n var p = amount / 100;\n\n var rgba = {\n r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n };\n\n return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n// tinycolor.isReadable(\"#000\", \"#111\") => false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n\n out = false;\n\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size ;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors ;\n level = args.level;\n size = args.size;\n\n for (var i= 0; i < colorList.length ; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n\n if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n return bestColor;\n }\n else {\n args.includeFallbackColors=false;\n return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n }\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = { };\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) { n = \"100%\"; }\n\n var processPercent = isPercentage(n);\n n = mathMin(max, mathMax(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if ((Math.abs(n - max) < 0.000001)) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = (n * 100) + \"%\";\n }\n\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color == 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if ((match = matchers.rgb.exec(color))) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n if ((match = matchers.rgba.exec(color))) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n if ((match = matchers.hsl.exec(color))) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n if ((match = matchers.hsla.exec(color))) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n if ((match = matchers.hsv.exec(color))) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n if ((match = matchers.hsva.exec(color))) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n if ((match = matchers.hex8.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex6.exec(color))) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if ((match = matchers.hex4.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n a: convertHexToDecimal(match[4] + '' + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if ((match = matchers.hex3.exec(color))) {\n return {\n r: parseIntFromHex(match[1] + '' + match[1]),\n g: parseIntFromHex(match[2] + '' + match[2]),\n b: parseIntFromHex(match[3] + '' + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n\n return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (typeof define === 'function' && define.amd) {\n define(function () {return tinycolor;});\n}\n// Browser: Expose to window\nelse {\n window.tinycolor = tinycolor;\n}\n\n})(Math);\n",
"/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n define(['jquery'], function ($) {\n return (function () {\n var $container;\n var listener;\n var toastId = 0;\n var toastType = {\n error: 'error',\n info: 'info',\n success: 'success',\n warning: 'warning'\n };\n\n var toastr = {\n clear: clear,\n remove: remove,\n error: error,\n getContainer: getContainer,\n info: info,\n options: {},\n subscribe: subscribe,\n success: success,\n version: '2.1.4',\n warning: warning\n };\n\n var previousToast;\n\n return toastr;\n\n ////////////////\n\n function error(message, title, optionsOverride) {\n return notify({\n type: toastType.error,\n iconClass: getOptions().iconClasses.error,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function getContainer(options, create) {\n if (!options) { options = getOptions(); }\n $container = $('#' + options.containerId);\n if ($container.length) {\n return $container;\n }\n if (create) {\n $container = createContainer(options);\n }\n return $container;\n }\n\n function info(message, title, optionsOverride) {\n return notify({\n type: toastType.info,\n iconClass: getOptions().iconClasses.info,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function subscribe(callback) {\n listener = callback;\n }\n\n function success(message, title, optionsOverride) {\n return notify({\n type: toastType.success,\n iconClass: getOptions().iconClasses.success,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function warning(message, title, optionsOverride) {\n return notify({\n type: toastType.warning,\n iconClass: getOptions().iconClasses.warning,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function clear($toastElement, clearOptions) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if (!clearToast($toastElement, options, clearOptions)) {\n clearContainer(options);\n }\n }\n\n function remove($toastElement) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if ($toastElement && $(':focus', $toastElement).length === 0) {\n removeToast($toastElement);\n return;\n }\n if ($container.children().length) {\n $container.remove();\n }\n }\n\n // internal functions\n\n function clearContainer (options) {\n var toastsToClear = $container.children();\n for (var i = toastsToClear.length - 1; i >= 0; i--) {\n clearToast($(toastsToClear[i]), options);\n }\n }\n\n function clearToast ($toastElement, options, clearOptions) {\n var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n $toastElement[options.hideMethod]({\n duration: options.hideDuration,\n easing: options.hideEasing,\n complete: function () { removeToast($toastElement); }\n });\n return true;\n }\n return false;\n }\n\n function createContainer(options) {\n $container = $('<div/>')\n .attr('id', options.containerId)\n .addClass(options.positionClass);\n\n $container.appendTo($(options.target));\n return $container;\n }\n\n function getDefaults() {\n return {\n tapToDismiss: true,\n toastClass: 'toast',\n containerId: 'toast-container',\n debug: false,\n\n showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n showDuration: 300,\n showEasing: 'swing', //swing and linear are built into jQuery\n onShown: undefined,\n hideMethod: 'fadeOut',\n hideDuration: 1000,\n hideEasing: 'swing',\n onHidden: undefined,\n closeMethod: false,\n closeDuration: false,\n closeEasing: false,\n closeOnHover: true,\n\n extendedTimeOut: 1000,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n },\n iconClass: 'toast-info',\n positionClass: 'toast-top-right',\n timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n escapeHtml: false,\n target: 'body',\n closeHtml: '<button type=\"button\">&times;</button>',\n closeClass: 'toast-close-button',\n newestOnTop: true,\n preventDuplicates: false,\n progressBar: false,\n progressClass: 'toast-progress',\n rtl: false\n };\n }\n\n function publish(args) {\n if (!listener) { return; }\n listener(args);\n }\n\n function notify(map) {\n var options = getOptions();\n var iconClass = map.iconClass || options.iconClass;\n\n if (typeof (map.optionsOverride) !== 'undefined') {\n options = $.extend(options, map.optionsOverride);\n iconClass = map.optionsOverride.iconClass || iconClass;\n }\n\n if (shouldExit(options, map)) { return; }\n\n toastId++;\n\n $container = getContainer(options, true);\n\n var intervalId = null;\n var $toastElement = $('<div/>');\n var $titleElement = $('<div/>');\n var $messageElement = $('<div/>');\n var $progressElement = $('<div/>');\n var $closeElement = $(options.closeHtml);\n var progressBar = {\n intervalId: null,\n hideEta: null,\n maxHideTime: null\n };\n var response = {\n toastId: toastId,\n state: 'visible',\n startTime: new Date(),\n options: options,\n map: map\n };\n\n personalizeToast();\n\n displayToast();\n\n handleEvents();\n\n publish(response);\n\n if (options.debug && console) {\n console.log(response);\n }\n\n return $toastElement;\n\n function escapeHtml(source) {\n if (source == null) {\n source = '';\n }\n\n return source\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n }\n\n function personalizeToast() {\n setIcon();\n setTitle();\n setMessage();\n setCloseButton();\n setProgressBar();\n setRTL();\n setSequence();\n setAria();\n }\n\n function setAria() {\n var ariaValue = '';\n switch (map.iconClass) {\n case 'toast-success':\n case 'toast-info':\n ariaValue = 'polite';\n break;\n default:\n ariaValue = 'assertive';\n }\n $toastElement.attr('aria-live', ariaValue);\n }\n\n function handleEvents() {\n if (options.closeOnHover) {\n $toastElement.hover(stickAround, delayedHideToast);\n }\n\n if (!options.onclick && options.tapToDismiss) {\n $toastElement.click(hideToast);\n }\n\n if (options.closeButton && $closeElement) {\n $closeElement.click(function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n event.cancelBubble = true;\n }\n\n if (options.onCloseClick) {\n options.onCloseClick(event);\n }\n\n hideToast(true);\n });\n }\n\n if (options.onclick) {\n $toastElement.click(function (event) {\n options.onclick(event);\n hideToast();\n });\n }\n }\n\n function displayToast() {\n $toastElement.hide();\n\n $toastElement[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n );\n\n if (options.timeOut > 0) {\n intervalId = setTimeout(hideToast, options.timeOut);\n progressBar.maxHideTime = parseFloat(options.timeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n if (options.progressBar) {\n progressBar.intervalId = setInterval(updateProgress, 10);\n }\n }\n }\n\n function setIcon() {\n if (map.iconClass) {\n $toastElement.addClass(options.toastClass).addClass(iconClass);\n }\n }\n\n function setSequence() {\n if (options.newestOnTop) {\n $container.prepend($toastElement);\n } else {\n $container.append($toastElement);\n }\n }\n\n function setTitle() {\n if (map.title) {\n var suffix = map.title;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.title);\n }\n $titleElement.append(suffix).addClass(options.titleClass);\n $toastElement.append($titleElement);\n }\n }\n\n function setMessage() {\n if (map.message) {\n var suffix = map.message;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.message);\n }\n $messageElement.append(suffix).addClass(options.messageClass);\n $toastElement.append($messageElement);\n }\n }\n\n function setCloseButton() {\n if (options.closeButton) {\n $closeElement.addClass(options.closeClass).attr('role', 'button');\n $toastElement.prepend($closeElement);\n }\n }\n\n function setProgressBar() {\n if (options.progressBar) {\n $progressElement.addClass(options.progressClass);\n $toastElement.prepend($progressElement);\n }\n }\n\n function setRTL() {\n if (options.rtl) {\n $toastElement.addClass('rtl');\n }\n }\n\n function shouldExit(options, map) {\n if (options.preventDuplicates) {\n if (map.message === previousToast) {\n return true;\n } else {\n previousToast = map.message;\n }\n }\n return false;\n }\n\n function hideToast(override) {\n var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n var duration = override && options.closeDuration !== false ?\n options.closeDuration : options.hideDuration;\n var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n if ($(':focus', $toastElement).length && !override) {\n return;\n }\n clearTimeout(progressBar.intervalId);\n return $toastElement[method]({\n duration: duration,\n easing: easing,\n complete: function () {\n removeToast($toastElement);\n clearTimeout(intervalId);\n if (options.onHidden && response.state !== 'hidden') {\n options.onHidden();\n }\n response.state = 'hidden';\n response.endTime = new Date();\n publish(response);\n }\n });\n }\n\n function delayedHideToast() {\n if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n intervalId = setTimeout(hideToast, options.extendedTimeOut);\n progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n }\n }\n\n function stickAround() {\n clearTimeout(intervalId);\n progressBar.hideEta = 0;\n $toastElement.stop(true, true)[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing}\n );\n }\n\n function updateProgress() {\n var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n $progressElement.width(percentage + '%');\n }\n }\n\n function getOptions() {\n return $.extend({}, getDefaults(), toastr.options);\n }\n\n function removeToast($toastElement) {\n if (!$container) { $container = getContainer(); }\n if ($toastElement.is(':visible')) {\n return;\n }\n $toastElement.remove();\n $toastElement = null;\n if ($container.children().length === 0) {\n $container.remove();\n previousToast = undefined;\n }\n }\n\n })();\n });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n if (typeof module !== 'undefined' && module.exports) { //Node\n module.exports = factory((typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null));\n } else {\n window.toastr = factory(window.jQuery);\n }\n}));\n",
"if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n",
"module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}",
"// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n",
"\"use strict\";var templateLoader=require(\"./template-loader.js\"),console=require('console-browserify'),ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),$=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null);require(\"./ko-bindings.js\");var performanceAwareCaller=require(\"./timed-call.js\").timedCall,addUndoStackExtensionMaker=require(\"./undomanager/undomain.js\"),colorPlugin=require(\"./ext/color.js\"),utilPlugin=require(\"./ext/util.js\"),inlinerPlugin=require(\"./ext/inliner.js\"),localStorageLoader=require(\"./ext/localstorage.js\");if(void 0===ko)throw\"Cannot find knockout.js library!\";if(void 0===$)throw\"Cannot find jquery library!\";function _canonicalize(e){var i=global.document.createElement(\"div\");return i.innerHTML=\"<a></a>\",i.firstChild.href=e,i.innerHTML=i.innerHTML,i.firstChild.href}function _appendUrlParameters(e,i){var a=-1==e.indexOf(\"?\")?\"?\":\"&\",t=e;for(var n in i)i.hasOwnProperty(n)&&(t+=a+n+\"=\"+encodeURIComponent(i[n]),a=\"&\");return t}var applyBindingOptions=function(e,i){i.bindingHandlers.wysiwygSrc.convertedUrl=function(i,a,t,n){var r=e.imgProcessorBackend?e.imgProcessorBackend:\"./upload\",o=r.match(/^(https?:\\/\\/[^\\/]*\\/).*$/),l=i.match(/^(https?:\\/\\/[^\\/]*\\/).*$/);if(null===o||null!==l&&o[1]==l[1])return-1==r.indexOf(\"?\")?\"?\":\"&\",_appendUrlParameters(r,{src:i,method:a,params:t+\",\"+n});console.log(\"Cannot apply backend image resizing to non-local resources \",i,a,t,n,o,l);var s={method:a,width:t};return null!==n&&(s.height=n),_appendUrlParameters(i,s)},i.bindingHandlers.wysiwygSrc.placeholderUrl=function(i,a,t){return _appendUrlParameters(e.imgProcessorBackend?e.imgProcessorBackend:\"./upload\",{method:\"placeholder\",params:i+\",\"+a})},e&&e.tinymceConfig&&(i.bindingHandlers.wysiwyg.standardOptions=e.tinymceConfig),e&&e.tinymceConfigFull&&(i.bindingHandlers.wysiwyg.fullOptions=e.tinymceConfigFull)},start=function(e,i,a,t,n){templateLoader.fixPageEvents();var r=[function(i){e&&e.strings&&(i.t=function(a,t){var n=e.strings[a];return void 0===n&&(console.warn(\"Missing translation string for\",a,\": using default string\"),n=a),i.tt(n,t)})},addUndoStackExtensionMaker(performanceAwareCaller),colorPlugin,utilPlugin,inlinerPlugin];if(void 0!==n)for(var o=0;o<n.length;o++)r.push(n[o]);r.push(function(i){var a={messages:{unknownError:i.t(\"Unknown error\"),uploadedBytes:i.t(\"Uploaded bytes exceed file size\"),maxNumberOfFiles:i.t(\"Maximum number of files exceeded\"),acceptFileTypes:i.t(\"File type not allowed\"),maxFileSize:i.t(\"File is too large\"),minFileSize:i.t(\"File is too small\"),post_max_size:i.t(\"The uploaded file exceeds the post_max_size directive in php.ini\"),max_file_size:i.t(\"File is too big\"),min_file_size:i.t(\"File is too small\"),accept_file_types:i.t(\"Filetype not allowed\"),max_number_of_files:i.t(\"Maximum number of files exceeded\"),max_width:i.t(\"Image exceeds maximum width\"),min_width:i.t(\"Image requires a minimum width\"),max_height:i.t(\"Image exceeds maximum height\"),min_height:i.t(\"Image requires a minimum height\"),abort:i.t(\"File upload aborted\"),image_resize:i.t(\"Failed to resize image\"),generic:i.t(\"Unexpected upload error\")}};e&&e.fileuploadConfig&&(a=$.extend(!0,a,e.fileuploadConfig)),ko.bindingHandlers.fileupload.extendOptions=a});var l=e.fileuploadConfig?e.fileuploadConfig.url:\"/upload/\";applyBindingOptions(e,ko),$(\"\\x3c!-- ko template: 'main' --\\x3e\\x3c!-- /ko --\\x3e\").appendTo(global.document.body),void 0===i&&void 0!==a&&(i=a.template),templateLoader.load(performanceAwareCaller,i,a,t,r,l)},initFromLocalStorage=function(e,i,a){try{var t=localStorageLoader(i,e.emailProcessorBackend),n=void 0!==a?a:[];n.push(t.extension);var r=_canonicalize(t.metadata.template);start(e,r,t.metadata,t.model,n)}catch(e){console.error(\"TODO not found \",i,e)}},init=function(e,i){var a=global.location.hash?global.location.href.split(\"#\")[1]:void 0;if(e&&(e.template||e.data))if(e.data){var t=JSON.parse(e.data);start(e,void 0,t.metadata,t.content,i)}else start(e,e.template,void 0,void 0,i);else if(a&&7==a.length)initFromLocalStorage(e,a,i);else{if(!a)return!1;start(e,_canonicalize(a),void 0,void 0,i)}return!0};module.exports={isCompatible:templateLoader.isCompatible,init:init,start:start};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJ0ZW1wbGF0ZUxvYWRlciIsInJlcXVpcmUiLCJjb25zb2xlIiwia28iLCIkIiwicGVyZm9ybWFuY2VBd2FyZUNhbGxlciIsInRpbWVkQ2FsbCIsImFkZFVuZG9TdGFja0V4dGVuc2lvbk1ha2VyIiwiY29sb3JQbHVnaW4iLCJ1dGlsUGx1Z2luIiwiaW5saW5lclBsdWdpbiIsImxvY2FsU3RvcmFnZUxvYWRlciIsIl9jYW5vbmljYWxpemUiLCJ1cmwiLCJkaXYiLCJnbG9iYWwiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJmaXJzdENoaWxkIiwiaHJlZiIsIl9hcHBlbmRVcmxQYXJhbWV0ZXJzIiwiYmFzZVVybCIsInBhcmFtZXRlcnMiLCJwYXJhbVNlcGFyYXRvciIsImluZGV4T2YiLCJyZXMiLCJwYXJhbSIsImhhc093blByb3BlcnR5IiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiYXBwbHlCaW5kaW5nT3B0aW9ucyIsIm9wdGlvbnMiLCJiaW5kaW5nSGFuZGxlcnMiLCJ3eXNpd3lnU3JjIiwiY29udmVydGVkVXJsIiwic3JjIiwibWV0aG9kIiwid2lkdGgiLCJoZWlnaHQiLCJpbWdQcm9jZXNzb3JCYWNrZW5kIiwiYmFja0VuZE1hdGNoIiwibWF0Y2giLCJzcmNNYXRjaCIsInBhcmFtcyIsImxvZyIsInBsYWNlaG9sZGVyVXJsIiwidGV4dCIsInRpbnltY2VDb25maWciLCJ3eXNpd3lnIiwic3RhbmRhcmRPcHRpb25zIiwidGlueW1jZUNvbmZpZ0Z1bGwiLCJmdWxsT3B0aW9ucyIsInN0YXJ0IiwidGVtcGxhdGVGaWxlIiwidGVtcGxhdGVNZXRhZGF0YSIsImpzb3Jqc29uIiwiY3VzdG9tRXh0ZW5zaW9ucyIsImZpeFBhZ2VFdmVudHMiLCJleHRlbnNpb25zIiwidm0iLCJzdHJpbmdzIiwidCIsImtleSIsIm9ialBhcmFtIiwid2FybiIsInR0IiwiayIsImxlbmd0aCIsInB1c2giLCJmaWxldXBsb2FkQ29uZmlnIiwibWVzc2FnZXMiLCJ1bmtub3duRXJyb3IiLCJ1cGxvYWRlZEJ5dGVzIiwibWF4TnVtYmVyT2ZGaWxlcyIsImFjY2VwdEZpbGVUeXBlcyIsIm1heEZpbGVTaXplIiwibWluRmlsZVNpemUiLCJwb3N0X21heF9zaXplIiwibWF4X2ZpbGVfc2l6ZSIsIm1pbl9maWxlX3NpemUiLCJhY2NlcHRfZmlsZV90eXBlcyIsIm1heF9udW1iZXJfb2ZfZmlsZXMiLCJtYXhfd2lkdGgiLCJtaW5fd2lkdGgiLCJtYXhfaGVpZ2h0IiwibWluX2hlaWdodCIsImFib3J0IiwiaW1hZ2VfcmVzaXplIiwiZ2VuZXJpYyIsImV4dGVuZCIsImV4dGVuZE9wdGlvbnMiLCJnYWxsZXJ5VXJsIiwiYXBwZW5kVG8iLCJib2R5IiwidGVtcGxhdGUiLCJsb2FkIiwiaW5pdEZyb21Mb2NhbFN0b3JhZ2UiLCJoYXNoX2tleSIsImxzRGF0YSIsImVtYWlsUHJvY2Vzc29yQmFja2VuZCIsImV4dGVuc2lvbiIsIm1ldGFkYXRhIiwibW9kZWwiLCJlIiwiZXJyb3IiLCJpbml0IiwiaGFzaCIsImxvY2F0aW9uIiwic3BsaXQiLCJ1bmRlZmluZWQiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwiY29udGVudCIsIm1vZHVsZSIsImV4cG9ydHMiLCJpc0NvbXBhdGlibGUiXSwibWFwcGluZ3MiOiJBQUFBLGFBSUEsSUFBSUEsZUFBaUJDLFFBQVEsd0JBQ3pCQyxRQUFVRCxRQUFRLFdBQ2xCRSxHQUFLRixRQUFRLFlBQ2JHLEVBQUlILFFBQVEsVUFDaEJBLFFBQVEsb0JBQ1IsSUFBSUksdUJBQXlCSixRQUFRLG1CQUFtQkssVUFFcERDLDJCQUE2Qk4sUUFBUSw2QkFDckNPLFlBQWNQLFFBQVEsa0JBQ3RCUSxXQUFhUixRQUFRLGlCQUNyQlMsY0FBZ0JULFFBQVEsb0JBRXhCVSxtQkFBcUJWLFFBQVEseUJBRWpDLFFBQWlCLElBQU5FLEdBQW1CLEtBQU0sbUNBQ3BDLFFBQWdCLElBQUxDLEVBQWtCLEtBQU0sOEJBRW5DLFNBQVNRLGNB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RixNQUFNLEtBQUssUUFBS0MsRUFHdkUsR0FBSTlFLElBQVlBLEVBQVErRCxVQUFZL0QsRUFBUStFLE1BQzFDLEdBQUkvRSxFQUFRK0UsS0FBTSxDQUNoQixJQUFJQSxFQUFPQyxLQUFLQyxNQUFNakYsRUFBUStFLE1BQzlCMUQsTUFBTXJCLE9BQVM4RSxFQUFXQyxFQUFLVCxTQUFVUyxFQUFLRyxRQUFTekQsUUFFdkRKLE1BQU1yQixFQUFTQSxFQUFRK0QsY0FBVWUsT0FBV0EsRUFBV3JELFFBR3BELEdBQUlrRCxHQUF1QixHQUFmQSxFQUFLdkMsT0FDdEI2QixxQkFBcUJqRSxFQUFTMkUsRUFBTWxELE9BRS9CLENBQUEsSUFBSWtELEVBR1QsT0FBTyxFQUZQdEQsTUFBTXJCLEVBQVNuQixjQUFjOEYsUUFBT0csT0FBV0EsRUFBV3JELEdBSTVELE9BQU8sR0FHVDBELE9BQU9DLFNBQ0xDLGFBQWNwSCxlQUFlb0gsYUFDN0JYLEtBQU1BLEtBQ05yRCxNQUFPQSIsImZpbGUiOiIvaG9tZS9idXJlcy9tb3NhaWNvL3NyYy9qcy9hcHAuanMifQ==",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),console=require('console-browserify'),addScriptTemplate=function(t,e,n){var o=t.createElement(\"script\");return o.setAttribute(\"type\",\"text/html\"),o.setAttribute(\"id\",e),o.text=n,t.body.appendChild(o),o};ko.bindingHandlers.bindIframe={tpl:'<!DOCTYPE html>\\r\\n<html>\\r\\n<head>\\r\\n</head>\\r\\n<body><div data-bind=\"block: content\"></div></body>\\r\\n</html>\\r\\n',init:function(t,e){!function(n){try{var o=t.contentDocument;o.open(),o.write(ko.bindingHandlers.bindIframe.tpl),o.close();try{var r=o.body;if(r){for(var i=t.contentWindow.parent.document.getElementsByTagName(\"script\"),a=0;a<i.length;a++)\"text/html\"==i[a].getAttribute(\"type\")&&i[a].getAttribute(\"id\")&&addScriptTemplate(o,i[a].getAttribute(\"id\"),i[a].innerHTML);var d=o.getElementsByTagName(\"HTML\");ko.utils.domNodeDisposal.addDisposeCallback(t,function(){ko.cleanNode(d[0]||r)}),ko.applyBindings(e(),d[0]||r)}else console.log(\"no iframedoc\",n)}catch(t){throw console.log(\"error reading iframe.body\",t,n),t}}catch(t){throw console.log(\"error reading iframe contentDocument\",t,n),t}}(\"first call\")}};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJpbmQtaWZyYW1lLmpzIl0sIm5hbWVzIjpbImtvIiwicmVxdWlyZSIsImNvbnNvbGUiLCJhZGRTY3JpcHRUZW1wbGF0ZSIsImRvYyIsInRlbXBsYXRlTmFtZSIsInRlbXBsYXRlTWFya3VwIiwic2NyaXB0VGFnIiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsInRleHQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJiaW5kaW5nSGFuZGxlcnMiLCJiaW5kSWZyYW1lIiwidHBsIiwiaW5pdCIsImVsZW1lbnQiLCJ2YWx1ZUFjY2Vzc29yIiwibG9jYWwiLCJpZnJhbWUiLCJjb250ZW50RG9jdW1lbnQiLCJvcGVuIiwid3JpdGUiLCJjbG9zZSIsImlmcmFtZWRvYyIsInRlbXBsYXRlcyIsImNvbnRlbnRXaW5kb3ciLCJwYXJlbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiaSIsImxlbmd0aCIsImdldEF0dHJpYnV0ZSIsImlubmVySFRNTCIsImh0bWwiLCJ1dGlscyIsImRvbU5vZGVEaXNwb3NhbCIsImFkZERpc3Bvc2VDYWxsYmFjayIsImNsZWFuTm9kZSIsImFwcGx5QmluZGluZ3MiLCJsb2ciLCJlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUVBLElBQUlBLEdBQUtDLFFBQVEsWUFDYkMsUUFBVUQsUUFBUSxXQUdsQkUsa0JBQW9CLFNBQVNDLEVBQUtDLEVBQWNDLEdBQ2xELElBQUlDLEVBQVlILEVBQUlJLGNBQWMsVUFLbEMsT0FKQUQsRUFBVUUsYUFBYSxPQUFRLGFBQy9CRixFQUFVRSxhQUFhLEtBQU1KLEdBQzdCRSxFQUFVRyxLQUFPSixFQUNqQkYsRUFBSU8sS0FBS0MsWUFBWUwsR0FDZEEsR0FLVFAsR0FBR2EsZ0JBQWdCQyxZQUVqQkMsSUFBSyx1SEFDTEMsS0FBTSxTQUFTQyxFQUFTQyxJQUN0QixTQUFvQkMsR0FDbEIsSUFDRSxJQUFJQyxFQUFTSCxFQUFRSSxnQkFDckJELEVBQU9FLE9BQ1BGLEVBQU9HLE1BQU12QixHQUFHYSxnQkFBZ0JDLFdBQVdDLEtBQzNDSyxFQUFPSSxRQUVQLElBQ0UsSUFBSUMsRUFBWUwsRUFBT1QsS0FDdkIsR0FBSWMsRUFBVyxDQUdiLElBREEsSUFBSUMsRUFBWVQsRUFBUVUsY0FBY0MsT0FBT0MsU0FBU0MscUJBQXFCLFVBQ2xFQyxFQUFJLEVBQUdBLEVBQUlMLEVBQVVNLE9BQVFELElBQ0ssYUFBckNMLEVBQVVLLEdBQUdFLGFBQWEsU0FBMEJQLEVBQVVLLEdBQUdFLGFBQWEsT0FDaEY5QixrQkFBa0JpQixFQUFRTSxFQUFVSyxHQUFHRSxhQUFhLE1BQU9QLEVBQVVLLEdBQUdHLFdBSTVFLElBQUlDLEVBQU9mLEVBQU9VLHFCQUFxQixRQUV2QzlCLEdBQUdvQyxNQUFNQyxnQkFBZ0JDLG1CQUFtQnJCLEVBQVMsV0FDbkRqQixHQUFHdUMsVUFBVUosRUFBSyxJQUFNVixLQUcxQnpCLEdBQUd3QyxjQUFjdEIsSUFBaUJpQixFQUFLLElBQU1WLFFBRTdDdkIsUUFBUXVDLElBQUksZUFBZ0J0QixHQUU5QixNQUFPdUIsR0FFUCxNQURBeEMsUUFBUXVDLElBQUksNEJBQTZCQyxFQUFHdkIsR0FDdEN1QixHQUVSLE1BQU9BLEdBRVAsTUFEQXhDLFFBQVF1QyxJQUFJLHVDQUF3Q0MsRUFBR3ZCLEdBQ2pEdUIsR0FJVjVCLENBQVciLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvYmluZGluZ3MvYmluZC1pZnJhbWUuanMifQ==",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),console=require('console-browserify');ko.bindingHandlers.withProperties={init:function(e,n,o,t,l){var a=l.createChildContext(l.$rawData,null,function(e){ko.utils.extend(e,n())});return ko.applyBindingsToDescendants(a,e),{controlsDescendantBindings:!0}}},ko.virtualElements.allowedBindings.withProperties=!0,ko.bindingHandlers.log={init:function(e,n,o,t,l){console.log(\"log\",n())}},ko.bindingHandlers.block={templateExists:function(e){return!!global.document.getElementById(e)},_chooseTemplate:function(e,n,o,t){var l=n+\"-\"+o;if(ko.bindingHandlers.block.templateExists(l))return l;if(void 0!==t&&null!==t)return ko.bindingHandlers.block._chooseTemplate(e,n,t);var a=e?\"array\":\"object-\"+o;if(ko.bindingHandlers.block.templateExists(a))return a;throw\"cannot find template for \"+l+\"/\"+a},_displayMode:function(e,n){var o=void 0!==e.type?ko.utils.unwrapObservable(e.type):\"notablock-\"+typeof e,t=void 0!==e.splice,l=n.templateMode?n.templateMode:\"show\";return ko.bindingHandlers.block._chooseTemplate(t,o,l,n.templateModeFallback)},_makeTemplateValueAccessor:function(e,n){return function(){var o,t,l=e(),a=ko.utils.peekObservable(l);if(!a||\"object\"!=typeof a.data&&\"function\"!=typeof a.data)o=l;else if(o=a.data,void 0!==a.template){var i=ko.utils.unwrapObservable(a.template),r=n.templateMode?n.templateMode:\"show\";t=ko.bindingHandlers.block._chooseTemplate(!1,i,r,n.templateModeFallback)}var s=ko.utils.unwrapObservable(o);if(ko.isObservable(s)&&console.log(\"doubleObservable\",s),void 0===t)if(void 0===o)t=\"empty\";else try{t=ko.bindingHandlers.block._displayMode(s,n)}catch(e){throw console.log(e,s,n.$data,n.templateMode),e}return{name:t,data:o,templateEngine:ko.nativeTemplateEngine.instance}}},init:function(e,n,o,t,l){void 0===n()&&console.log(\"found a null block: check ending commas in arrays defs in IE\");var a=ko.bindingHandlers.block._makeTemplateValueAccessor(n,l);return ko.bindingHandlers.template.init(e,a)},update:function(e,n,o,t,l){var a=ko.bindingHandlers.block._makeTemplateValueAccessor(n,l);return ko.bindingHandlers.template.update(e,a,o,t,l)}},ko.expressionRewriting.bindingRewriteValidators.block=!1,ko.virtualElements.allowedBindings.block=!0;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJsb2Nrcy5qcyJdLCJuYW1lcyI6WyJrbyIsInJlcXVpcmUiLCJjb25zb2xlIiwiYmluZGluZ0hhbmRsZXJzIiwiaW5pdCIsImVsZW1lbnQiLCJ2YWx1ZUFjY2Vzc29yIiwiYWxsQmluZGluZ3MiLCJ2aWV3TW9kZWwiLCJiaW5kaW5nQ29udGV4dCIsImNoaWxkQmluZGluZ0NvbnRleHQiLCJjcmVhdGVDaGlsZENvbnRleHQiLCIkcmF3RGF0YSIsImNvbnRleHQiLCJ1dGlscyIsImV4dGVuZCIsImFwcGx5QmluZGluZ3NUb0Rlc2NlbmRhbnRzIiwiY29udHJvbHNEZXNjZW5kYW50QmluZGluZ3MiLCJ2aXJ0dWFsRWxlbWVudHMiLCJhbGxvd2VkQmluZGluZ3MiLCJsb2ciLCJ0ZW1wbGF0ZUV4aXN0cyIsImlkIiwiZ2xvYmFsIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIl9jaG9vc2VUZW1wbGF0ZSIsImlzQXJyYXkiLCJwcmVmaXgiLCJhY3Rpb24iLCJmYWxsYmFjayIsImZhbGxCYWNrSWQiLCJfZGlzcGxheU1vZGUiLCJ1bndyYXBwZWQiLCJ0eXBlIiwidW53cmFwT2JzZXJ2YWJsZSIsInNwbGljZSIsInRlbXBsYXRlTW9kZSIsInRlbXBsYXRlTW9kZUZhbGxiYWNrIiwiX21ha2VUZW1wbGF0ZVZhbHVlQWNjZXNzb3IiLCJtb2RlbFZhbHVlIiwidGVtcGxhdGUiLCJ2YWx1ZSIsInVud3JhcHBlZFZhbHVlIiwicGVla09ic2VydmFibGUiLCJkYXRhIiwidGVtcGxhdGVQYXJhbSIsInVud3JhcHBlZE1vZGVsVmFsdWUiLCJpc09ic2VydmFibGUiLCJ1bmRlZmluZWQiLCJlIiwibmFtZSIsInRlbXBsYXRlRW5naW5lIiwibmF0aXZlVGVtcGxhdGVFbmdpbmUiLCJpbnN0YW5jZSIsIm5ld1ZhbHVlQWNjZXNzb3IiLCJ1cGRhdGUiLCJleHByZXNzaW9uUmV3cml0aW5nIiwiYmluZGluZ1Jld3JpdGVWYWxpZGF0b3JzIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUdBLElBQUlBLEdBQUtDLFFBQVEsWUFDYkMsUUFBVUQsUUFBUSxXQUd0QkQsR0FBR0csZ0JBQWdDLGdCQUNqQ0MsS0FBTSxTQUFTQyxFQUFTQyxFQUFlQyxFQUFhQyxFQUFXQyxHQUU3RCxJQUFJQyxFQUFzQkQsRUFBZUUsbUJBQ3ZDRixFQUFlRyxTQUNmLEtBQ0EsU0FBU0MsR0FDUGIsR0FBR2MsTUFBTUMsT0FBT0YsRUFBU1AsT0FNN0IsT0FIQU4sR0FBR2dCLDJCQUEyQk4sRUFBcUJMLElBSWpEWSw0QkFBNEIsS0FJbENqQixHQUFHa0IsZ0JBQWdCQyxnQkFBZ0MsZ0JBQUksRUFFdkRuQixHQUFHRyxnQkFBcUIsS0FDdEJDLEtBQU0sU0FBU0MsRUFBU0MsRUFBZUMsRUFBYUMsRUFBV0MsR0FDN0RQLFFBQVFrQixJQUFJLE1BQU9kLE9BS3ZCTixHQUFHRyxnQkFBdUIsT0FFeEJrQixlQUFnQixTQUFTQyxHQUV2QixRQURTQyxPQUFPQyxTQUFTQyxlQUFlSCxJQUsxQ0ksZ0JBQWlCLFNBQVNDLEVBQVNDLEVBQVFDLEVBQVFDLEdBQ2pELElBQUlSLEVBQUtNLEVBQVMsSUFBTUMsRUFDeEIsR0FBSTdCLEdBQUdHLGdCQUF1QixNQUFFa0IsZUFBZUMsR0FBSyxPQUFPQSxFQUMzRCxRQUF1QixJQUFaUSxHQUF3QyxPQUFiQSxFQUFtQixPQUFPOUIsR0FBR0csZ0JBQXVCLE1BQUV1QixnQkFBZ0JDLEVBQVNDLEVBQVFFLEdBRTNILElBQUlDLEVBQWFKLEVBQVUsUUFBVSxVQUFZRSxFQUNqRCxHQUFJN0IsR0FBR0csZ0JBQXVCLE1BQUVrQixlQUFlVSxHQUFhLE9BQU9BLEVBQzlELEtBQU0sNEJBQThCVCxFQUFLLElBQU1TLEdBS3hEQyxhQUFjLFNBQVNDLEVBQVd4QixHQUNoQyxJQUFJbUIsT0FBa0MsSUFBbEJLLEVBQVVDLEtBQXNCbEMsR0FBR2MsTUFBTXFCLGlCQUFpQkYsRUFBVUMsTUFBUSxvQkFBcUIsRUFDakhQLE9BQXNDLElBQXJCTSxFQUFVRyxPQUMzQkMsRUFBZTVCLEVBQWU0QixhQUFlNUIsRUFBZTRCLGFBQWUsT0FDL0UsT0FBT3JDLEdBQUdHLGdCQUF1QixNQUFFdUIsZ0JBQWdCQyxFQUFTQyxFQUFRUyxFQUFjNUIsRUFBZTZCLHVCQUduR0MsMkJBQTRCLFNBQVNqQyxFQUFlRyxHQUNsRCxPQUFPLFdBQ0wsSUFJSStCLEVBQ0FDLEVBTEFDLEVBQVFwQyxJQUNWcUMsRUFBaUIzQyxHQUFHYyxNQUFNOEIsZUFBZUYsR0FNM0MsSUFBTUMsR0FBa0QsaUJBQXZCQSxFQUFlRSxNQUFrRCxtQkFBdkJGLEVBQWVFLEtBQ3hGTCxFQUFhRSxPQUdiLEdBREFGLEVBQWFHLEVBQWVFLFVBQ1UsSUFBM0JGLEVBQWVGLFNBQXlCLENBQ2pELElBQUlLLEVBQWdCOUMsR0FBR2MsTUFBTXFCLGlCQUFpQlEsRUFBZUYsVUFDekRKLEVBQWU1QixFQUFlNEIsYUFBZTVCLEVBQWU0QixhQUFlLE9BQy9FSSxFQUFXekMsR0FBR0csZ0JBQXVCLE1BQUV1QixpQkFBZ0IsRUFBT29CLEVBQWVULEVBQWM1QixFQUFlNkIsc0JBSTlHLElBQUlTLEVBQXNCL0MsR0FBR2MsTUFBTXFCLGlCQUFpQkssR0FHcEQsR0FGSXhDLEdBQUdnRCxhQUFhRCxJQUFzQjdDLFFBQVFrQixJQUFJLG1CQUFvQjJCLFFBRW5ELElBQVpOLEVBRVQsUUFBbUJRLElBQWZULEVBQ0ZDLEVBQVcsYUFFWCxJQUNFQSxFQUFXekMsR0FBR0csZ0JBQXVCLE1BQUU2QixhQUFhZSxFQUFxQnRDLEdBQ3pFLE1BQU95QyxHQUVQLE1BREFoRCxRQUFRa0IsSUFBSThCLEVBQUdILEVBQXFCdEMsRUFBc0IsTUFBR0EsRUFBZTRCLGNBQ3RFYSxFQUtaLE9BQ0VDLEtBQVFWLEVBQ1JJLEtBQVFMLEVBQ1JZLGVBQWtCcEQsR0FBR3FELHFCQUFxQkMsWUFLaERsRCxLQUFRLFNBQVNDLEVBQVNDLEVBQWVDLEVBQWFDLEVBQVdDLFFBQ2hDLElBQXBCSCxLQUFpQ0osUUFBUWtCLElBQUksZ0VBQ3hELElBQUltQyxFQUFtQnZELEdBQUdHLGdCQUF1QixNQUFFb0MsMkJBQTJCakMsRUFBZUcsR0FDN0YsT0FBT1QsR0FBR0csZ0JBQTBCLFNBQVEsS0FBRUUsRUFBU2tELElBRXpEQyxPQUFVLFNBQVNuRCxFQUFTQyxFQUFlQyxFQUFhQyxFQUFXQyxHQUNqRSxJQUFJOEMsRUFBbUJ2RCxHQUFHRyxnQkFBdUIsTUFBRW9DLDJCQUEyQmpDLEVBQWVHLEdBQzdGLE9BQU9ULEdBQUdHLGdCQUEwQixTQUFVLE9BQUVFLEVBQVNrRCxFQUFrQmhELEVBQWFDLEVBQVdDLEtBR3ZHVCxHQUFHeUQsb0JBQW9CQyx5QkFBZ0MsT0FBSSxFQUMzRDFELEdBQUdrQixnQkFBZ0JDLGdCQUF1QixPQUFJIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL2JpbmRpbmdzL2Jsb2Nrcy5qcyJ9",
"\"use strict\";module.exports=require(\"./string-template.js\");\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNob29zZS10ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicmVxdWlyZSJdLCJtYXBwaW5ncyI6IkFBQUEsYUFLQUEsT0FBT0MsUUFBVUMsUUFBUSIsImZpbGUiOiIvaG9tZS9idXJlcy9tb3NhaWNvL3NyYy9qcy9iaW5kaW5ncy9jaG9vc2UtdGVtcGxhdGUuanMifQ==",
"\"use strict\";require('evol.colorpicker/js/evol.colorpicker.min.js');var $=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),kojqui=(typeof window !== \"undefined\" ? window['kojqui'] : typeof global !== \"undefined\" ? global['kojqui'] : null),ColorPicker=function(){kojqui.BindingHandler.call(this,\"colorpicker\")};ColorPicker.prototype=kojqui.utils.createObject(kojqui.BindingHandler.prototype),ColorPicker.prototype.constructor=ColorPicker,ColorPicker.prototype.init=function(o,r,e){var i=r(),t=i.color,c=ko.computed({read:t,write:t,disposeWhenNodeIsRemoved:o});ko.bindingHandlers.value.init(o,function(){return c},e);var n=function(o,r){void 0!==r&&c(r)};$(o).on(\"change.color\",n),ko.computed({read:function(){var r={color:ko.utils.unwrapObservable(c),showOn:\"button\"};for(var e in i)\"color\"!==e&&i.hasOwnProperty(e)&&(r[e]=ko.utils.unwrapObservable(i[e]));$(o).colorpicker(r)},disposeWhenNodeIsRemoved:o}),ko.utils.domNodeDisposal.addDisposeCallback(o,function(){$(o).off(\"change.color\",n),$(o).colorpicker(\"destroy\")})},kojqui.utils.register(ColorPicker);\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbG9ycGlja2VyLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCIkIiwia28iLCJrb2pxdWkiLCJDb2xvclBpY2tlciIsIkJpbmRpbmdIYW5kbGVyIiwiY2FsbCIsInRoaXMiLCJwcm90b3R5cGUiLCJ1dGlscyIsImNyZWF0ZU9iamVjdCIsImNvbnN0cnVjdG9yIiwiaW5pdCIsImVsZW1lbnQiLCJ2YWx1ZUFjY2Vzc29yIiwiYWxsQmluZGluZ3MiLCJ2YSIsInZhbHVlIiwiY29sb3IiLCJuZXdETyIsImNvbXB1dGVkIiwicmVhZCIsIndyaXRlIiwiZGlzcG9zZVdoZW5Ob2RlSXNSZW1vdmVkIiwiYmluZGluZ0hhbmRsZXJzIiwiY2hhbmdlUHJvcGFnYXRvciIsImV2ZW50Iiwib24iLCJvcHQiLCJ1bndyYXBPYnNlcnZhYmxlIiwic2hvd09uIiwicHJvcCIsImhhc093blByb3BlcnR5IiwiY29sb3JwaWNrZXIiLCJkb21Ob2RlRGlzcG9zYWwiLCJhZGREaXNwb3NlQ2FsbGJhY2siLCJvZmYiLCJyZWdpc3RlciJdLCJtYXBwaW5ncyI6IkFBQUEsYUFHQUEsUUFBUSxvQkFFUixJQUFJQyxFQUFJRCxRQUFRLFVBQ1pFLEdBQUtGLFFBQVEsWUFDYkcsT0FBU0gsUUFBUSxxQkFHakJJLFlBQWMsV0FDaEJELE9BQU9FLGVBQWVDLEtBQUtDLEtBQU0sZ0JBRW5DSCxZQUFZSSxVQUFZTCxPQUFPTSxNQUFNQyxhQUFhUCxPQUFPRSxlQUFlRyxXQUN4RUosWUFBWUksVUFBVUcsWUFBY1AsWUFFcENBLFlBQVlJLFVBQVVJLEtBQU8sU0FBU0MsRUFBU0MsRUFBZUMsR0FDNUQsSUFBSUMsRUFBS0YsSUFDTEcsRUFBUUQsRUFBR0UsTUFJWEMsRUFBUWpCLEdBQUdrQixVQUNiQyxLQUFNSixFQUNOSyxNQUFPTCxFQUNQTSx5QkFBMEJWLElBTTVCWCxHQUFHc0IsZ0JBQWdCUCxNQUFNTCxLQUFLQyxFQUpsQixXQUNWLE9BQU9NLEdBR3FDSixHQUU5QyxJQUFJVSxFQUFtQixTQUFTQyxFQUFPUixRQUNoQixJQUFWQSxHQUF1QkMsRUFBTUQsSUFFMUNqQixFQUFFWSxHQUFTYyxHQUFHLGVBQWdCRixHQUU5QnZCLEdBQUdrQixVQUNEQyxLQUFNLFdBQ0osSUFBSU8sR0FDRlYsTUFBT2hCLEdBQUdPLE1BQU1vQixpQkFBaUJWLEdBQ2pDVyxPQUFRLFVBRVYsSUFBSyxJQUFJQyxLQUFRZixFQUNGLFVBQVRlLEdBQW9CZixFQUFHZ0IsZUFBZUQsS0FBT0gsRUFBSUcsR0FBUTdCLEdBQUdPLE1BQU1vQixpQkFBaUJiLEVBQUdlLEtBQzVGOUIsRUFBRVksR0FBU29CLFlBQVlMLElBRXpCTCx5QkFBMEJWLElBRzVCWCxHQUFHTyxNQUFNeUIsZ0JBQWdCQyxtQkFBbUJ0QixFQUFTLFdBQ25EWixFQUFFWSxHQUFTdUIsSUFBSSxlQUFnQlgsR0FDL0J4QixFQUFFWSxHQUFTb0IsWUFBWSxjQUkzQjlCLE9BQU9NLE1BQU00QixTQUFTakMiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvYmluZGluZ3MvY29sb3JwaWNrZXIuanMifQ==",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null);ko.bindingHandlers.cssText={update:function(e,t,n){var r=ko.utils.unwrapObservable(t());try{e.innerText=r}catch(t){e.styleSheet||(e.innerHTML=\"a{}\"),e.styleSheet.cssText=r}}};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzc3RleHQuanMiXSwibmFtZXMiOlsia28iLCJyZXF1aXJlIiwiYmluZGluZ0hhbmRsZXJzIiwiY3NzVGV4dCIsInVwZGF0ZSIsIm5vZGUiLCJ2YWx1ZUFjY2Vzc29yIiwiYWxsQmluZGluZ3MiLCJ0ZXh0IiwidXRpbHMiLCJ1bndyYXBPYnNlcnZhYmxlIiwiaW5uZXJUZXh0IiwiZSIsInN0eWxlU2hlZXQiLCJpbm5lckhUTUwiXSwibWFwcGluZ3MiOiJBQUFBLGFBRUEsSUFBSUEsR0FBS0MsUUFBUSxZQUdqQkQsR0FBR0UsZ0JBQWdCQyxTQUNqQkMsT0FBVSxTQUFTQyxFQUFNQyxFQUFlQyxHQUN0QyxJQUFJQyxFQUFPUixHQUFHUyxNQUFNQyxpQkFBaUJKLEtBQ3JDLElBQ0VELEVBQUtNLFVBQVlILEVBQ2pCLE1BQU9JLEdBQ0ZQLEVBQUtRLGFBQVlSLEVBQUtTLFVBQVksT0FDdkNULEVBQUtRLFdBQVdWLFFBQVVLIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL2JpbmRpbmdzL2Nzc3RleHQuanMifQ==",
"\"use strict\";var $=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null);!function(e,t){e.utils.unwrapObservable;var o=e.utils.domData.get;e.utils.domData.set,e.bindingHandlers.droppable={init:function(a,n,d,i,l){var r,s=t(a),p=e.utils.unwrapObservable(n())||{},u={};t.extend(!0,u,e.bindingHandlers.droppable),p.data?(p.options&&u.options&&(e.utils.extend(u.options,p.options),delete p.options),e.utils.extend(u,p)):u.data=p,r=u.options.drop,s.droppable(e.utils.extend(u.options,{drop:function(e,t){var a=t.draggable[0],n=o(a,\"ko_sortItem\")||o(a,\"ko_dragItem\");n&&(n.clone&&(n=n.clone()),u.dragged&&(n=u.dragged.call(this,n,e,t)||n),u.data&&u.data(n)),r&&r.apply(this,arguments)}})),void 0!==u.isEnabled&&e.computed({read:function(){s.droppable(e.utils.unwrapObservable(u.isEnabled)?\"enable\":\"disable\")},disposeWhenNodeIsRemoved:a})},update:function(e,t,o,a,n){},targetIndex:null,afterMove:null,beforeMove:null,options:{}}}(ko,$);\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3BwYWJsZS5qcyJdLCJuYW1lcyI6WyIkIiwicmVxdWlyZSIsImtvIiwidXRpbHMiLCJ1bndyYXBPYnNlcnZhYmxlIiwiZGF0YUdldCIsImRvbURhdGEiLCJnZXQiLCJzZXQiLCJiaW5kaW5nSGFuZGxlcnMiLCJkcm9wcGFibGUiLCJpbml0IiwiZWxlbWVudCIsInZhbHVlQWNjZXNzb3IiLCJhbGxCaW5kaW5nc0FjY2Vzc29yIiwiZGF0YSIsImNvbnRleHQiLCJkcm9wQWN0dWFsIiwiJGVsZW1lbnQiLCJ2YWx1ZSIsImV4dGVuZCIsIm9wdGlvbnMiLCJkcm9wIiwiZXZlbnQiLCJ1aSIsImVsIiwiZHJhZ2dhYmxlIiwiaXRlbSIsImNsb25lIiwiZHJhZ2dlZCIsImNhbGwiLCJ0aGlzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJpc0VuYWJsZWQiLCJjb21wdXRlZCIsInJlYWQiLCJkaXNwb3NlV2hlbk5vZGVJc1JlbW92ZWQiLCJ1cGRhdGUiLCJ0YXJnZXRJbmRleCIsImFmdGVyTW92ZSIsImJlZm9yZU1vdmUiLCJmYWN0b3J5Il0sIm1hcHBpbmdzIjoiQUFBQSxhQUVBLElBQUlBLEVBQUlDLFFBQVEsVUFDWkMsR0FBS0QsUUFBUSxhQUtkLFNBQVNDLEVBQUlGLEdBTUhFLEVBQUdDLE1BQU1DLGlCQUxwQixJQU1FQyxFQUFVSCxFQUFHQyxNQUFNRyxRQUFRQyxJQUNqQkwsRUFBR0MsTUFBTUcsUUFBUUUsSUFFN0JOLEVBQUdPLGdCQUFnQkMsV0FDakJDLEtBQU0sU0FBU0MsRUFBU0MsRUFBZUMsRUFBcUJDLEVBQU1DLEdBQ2hFLElBR0VDLEVBSEVDLEVBQVdsQixFQUFFWSxHQUNmTyxFQUFRakIsRUFBR0MsTUFBTUMsaUJBQWlCUyxTQUNsQ0gsS0FHRlYsRUFBRW9CLFFBQU8sRUFBTVYsRUFBV1IsRUFBR08sZ0JBQWdCQyxXQUN6Q1MsRUFBTUosTUFDSkksRUFBTUUsU0FBV1gsRUFBVVcsVUFDN0JuQixFQUFHQyxNQUFNaUIsT0FBT1YsRUFBVVcsUUFBU0YsRUFBTUUsZ0JBQ2xDRixFQUFNRSxTQUVmbkIsRUFBR0MsTUFBTWlCLE9BQU9WLEVBQVdTLElBRTNCVCxFQUFVSyxLQUFPSSxFQUduQkYsRUFBYVAsRUFBVVcsUUFBUUMsS0FFL0JKLEVBQVNSLFVBQVVSLEVBQUdDLE1BQU1pQixPQUFPVixFQUFVVyxTQUMzQ0MsS0FBTSxTQUFTQyxFQUFPQyxHQUVwQixJQUFJQyxFQUFLRCxFQUFHRSxVQUFVLEdBQ3BCQyxFQUFPdEIsRUFBUW9CLEVBakNYLGdCQWlDMkJwQixFQUFRb0IsRUE3QnJDLGVBK0JBRSxJQUVFQSxFQUFLQyxRQUNQRCxFQUFPQSxFQUFLQyxTQUdWbEIsRUFBVW1CLFVBQ1pGLEVBQU9qQixFQUFVbUIsUUFBUUMsS0FBS0MsS0FBTUosRUFBTUosRUFBT0MsSUFBT0csR0FHdERqQixFQUFVSyxNQUNaTCxFQUFVSyxLQUFLWSxJQUtmVixHQUNGQSxFQUFXZSxNQUFNRCxLQUFNRSxvQkFPREMsSUFBeEJ4QixFQUFVeUIsV0FDWmpDLEVBQUdrQyxVQUNEQyxLQUFNLFdBQ0puQixFQUFTUixVQUFVUixFQUFHQyxNQUFNQyxpQkFBaUJNLEVBQVV5QixXQUFhLFNBQVcsWUFFakZHLHlCQUEwQjFCLEtBS2hDMkIsT0FBUSxTQUFTM0IsRUFBU0MsRUFBZUMsRUFBcUJDLEVBQU1DLEtBR3BFd0IsWUFBYSxLQUNiQyxVQUFXLEtBQ1hDLFdBQVksS0FDWnJCLFlBN0VGc0IsQ0FBUXpDLEdBQUlGIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL2JpbmRpbmdzL2Ryb3BwYWJsZS5qcyJ9",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),$=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),console=require('console-browserify');ko.bindingHandlers.focusable={focus:function(){},blur:function(){},init:function(o){ko.utils.domNodeDisposal.addDisposeCallback(o,function(){$(o).off(\"focusin\",ko.bindingHandlers.focusable.focus),$(o).off(\"focusout\",ko.bindingHandlers.focusable.blur)}),$(o).on(\"focusin\",ko.bindingHandlers.focusable.focus),$(o).on(\"focusout\",ko.bindingHandlers.focusable.blur)}},ko.bindingHandlers.scrollable={scroll:function(){},init:function(o){ko.utils.domNodeDisposal.addDisposeCallback(o,function(){$(o).off(\"scroll\",ko.bindingHandlers.scrollable.scroll)}),$(o).on(\"scroll\",ko.bindingHandlers.scrollable.scroll)}};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV2ZW50YWJsZS5qcyJdLCJuYW1lcyI6WyJrbyIsInJlcXVpcmUiLCIkIiwiY29uc29sZSIsImJpbmRpbmdIYW5kbGVycyIsImZvY3VzYWJsZSIsImZvY3VzIiwiYmx1ciIsImluaXQiLCJlbGVtZW50IiwidXRpbHMiLCJkb21Ob2RlRGlzcG9zYWwiLCJhZGREaXNwb3NlQ2FsbGJhY2siLCJvZmYiLCJvbiIsInNjcm9sbGFibGUiLCJzY3JvbGwiXSwibWFwcGluZ3MiOiJBQUFBLGFBRUEsSUFBSUEsR0FBS0MsUUFBUSxZQUNiQyxFQUFJRCxRQUFRLFVBQ1pFLFFBQVVGLFFBQVEsV0FHdEJELEdBQUdJLGdCQUFnQkMsV0FDakJDLE1BQVMsYUFDVEMsS0FBUSxhQUNSQyxLQUFRLFNBQVNDLEdBQ2ZULEdBQUdVLE1BQU1DLGdCQUFnQkMsbUJBQW1CSCxFQUFTLFdBQ25EUCxFQUFFTyxHQUFTSSxJQUFJLFVBQVdiLEdBQUdJLGdCQUFnQkMsVUFBVUMsT0FDdkRKLEVBQUVPLEdBQVNJLElBQUksV0FBWWIsR0FBR0ksZ0JBQWdCQyxVQUFVRSxRQUcxREwsRUFBRU8sR0FBU0ssR0FBRyxVQUFXZCxHQUFHSSxnQkFBZ0JDLFVBQVVDLE9BQ3RESixFQUFFTyxHQUFTSyxHQUFHLFdBQVlkLEdBQUdJLGdCQUFnQkMsVUFBVUUsUUFLM0RQLEdBQUdJLGdCQUFnQlcsWUFDakJDLE9BQVUsYUFDVlIsS0FBUSxTQUFTQyxHQUNmVCxHQUFHVSxNQUFNQyxnQkFBZ0JDLG1CQUFtQkgsRUFBUyxXQUNuRFAsRUFBRU8sR0FBU0ksSUFBSSxTQUFVYixHQUFHSSxnQkFBZ0JXLFdBQVdDLFVBR3pEZCxFQUFFTyxHQUFTSyxHQUFHLFNBQVVkLEdBQUdJLGdCQUFnQlcsV0FBV0MiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvYmluZGluZ3MvZXZlbnRhYmxlLmpzIn0=",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null);ko.extenders.paging=function(e,t){var n=ko.observable(t||10),r=ko.observable(1);return e.pageSize=ko.computed({read:n,write:function(e){n(e>0?e:10)}}),e.currentPage=ko.computed({read:r,write:function(t){t>e.pageCount()?r(e.pageCount()):r(t<=0?1:t)}}),e.pageCount=ko.computed(function(){return Math.ceil(e().length/e.pageSize())||1}),e.currentPageData=ko.computed(function(){var t=n(),o=r(),u=t*(o-1),a=t*o;return e().slice(u,a)}),e.moveFirst=function(){e.currentPage(1)},e.movePrevious=function(){e.currentPage(e.currentPage()-1)},e.moveNext=function(){e.currentPage(e.currentPage()+1)},e.moveLast=function(){e.currentPage(e.pageCount())},e};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4dGVuZGVyLXBhZ2luYXRpb24uanMiXSwibmFtZXMiOlsia28iLCJyZXF1aXJlIiwiZXh0ZW5kZXJzIiwicGFnaW5nIiwidGFyZ2V0IiwicGFnZVNpemUiLCJfcGFnZVNpemUiLCJvYnNlcnZhYmxlIiwiX2N1cnJlbnRQYWdlIiwiY29tcHV0ZWQiLCJyZWFkIiwid3JpdGUiLCJuZXdWYWx1ZSIsImN1cnJlbnRQYWdlIiwicGFnZUNvdW50IiwiTWF0aCIsImNlaWwiLCJsZW5ndGgiLCJjdXJyZW50UGFnZURhdGEiLCJwYWdlSW5kZXgiLCJzdGFydEluZGV4IiwiZW5kSW5kZXgiLCJzbGljZSIsIm1vdmVGaXJzdCIsIm1vdmVQcmV2aW91cyIsIm1vdmVOZXh0IiwibW92ZUxhc3QiXSwibWFwcGluZ3MiOiJBQUFBLGFBRUEsSUFBSUEsR0FBS0MsUUFBUSxZQUVqQkQsR0FBR0UsVUFBVUMsT0FBUyxTQUFTQyxFQUFRQyxHQUNyQyxJQUFJQyxFQUFZTixHQUFHTyxXQUFXRixHQUFZLElBRXhDRyxFQUFlUixHQUFHTyxXQUFXLEdBbUQvQixPQWxEQUgsRUFBT0MsU0FBV0wsR0FBR1MsVUFDbkJDLEtBQU1KLEVBQ05LLE1BQU8sU0FBU0MsR0FFWk4sRUFERU0sRUFBVyxFQUNIQSxFQUVBLE9BS2hCUixFQUFPUyxZQUFjYixHQUFHUyxVQUN0QkMsS0FBTUYsRUFDTkcsTUFBTyxTQUFTQyxHQUNWQSxFQUFXUixFQUFPVSxZQUNwQk4sRUFBYUosRUFBT1UsYUFFcEJOLEVBRFNJLEdBQVksRUFDUixFQUVBQSxNQUtuQlIsRUFBT1UsVUFBWWQsR0FBR1MsU0FBUyxXQUM3QixPQUFPTSxLQUFLQyxLQUFLWixJQUFTYSxPQUFTYixFQUFPQyxhQUFlLElBRzNERCxFQUFPYyxnQkFBa0JsQixHQUFHUyxTQUFTLFdBQ25DLElBQUlKLEVBQVdDLElBQ2JhLEVBQVlYLElBQ1pZLEVBQWFmLEdBQVljLEVBQVksR0FDckNFLEVBQVdoQixFQUFXYyxFQUV4QixPQUFPZixJQUFTa0IsTUFBTUYsRUFBWUMsS0FHcENqQixFQUFPbUIsVUFBWSxXQUNqQm5CLEVBQU9TLFlBQVksSUFFckJULEVBQU9vQixhQUFlLFdBQ3BCcEIsRUFBT1MsWUFBWVQsRUFBT1MsY0FBZ0IsSUFFNUNULEVBQU9xQixTQUFXLFdBQ2hCckIsRUFBT1MsWUFBWVQsRUFBT1MsY0FBZ0IsSUFFNUNULEVBQU9zQixTQUFXLFdBQ2hCdEIsRUFBT1MsWUFBWVQsRUFBT1UsY0FHckJWIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL2JpbmRpbmdzL2V4dGVuZGVyLXBhZ2luYXRpb24uanMifQ==",
"\"use strict\";var $=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),sortable=(typeof window !== \"undefined\" ? window['jQuery']['ui']['sortable'] : typeof global !== \"undefined\" ? global['jQuery']['ui']['sortable'] : null),draggable=(typeof window !== \"undefined\" ? window['jQuery']['ui']['draggable'] : typeof global !== \"undefined\" ? global['jQuery']['ui']['draggable'] : null),console=require('console-browserify');if(require(\"knockout-sortable\"),void 0===sortable)throw\"Cannot find jquery-ui sortable widget dependency!\";if(void 0===draggable)throw\"Cannot find jquery-ui sortable widget dependency!\";var isDraggingHelper=function(e,r){e()?r.type==e()+\"stop\"&&e(!1):\"dragstart\"!=r.type&&\"sortstart\"!=r.type||e(r.type.substring(0,4))},makeExtendedValueAccessor=function(e){return function(){var r=e();ko.utils.peekObservable(r);ko.utils.unwrapObservable(r),\"undefined\"==r.options&&(r.options={});var n=r.options.start;r.options.start=function(e,i){if(void 0!==r.dragging&&ko.isWritableObservable(r.dragging)&&isDraggingHelper(r.dragging,e),void 0!==r.dropContainer&&(r.scrollInterval=global.setInterval(function(){var e=$(r.dropContainer).scrollTop();$(r.dropContainer).scrollTop(e+r.adding)},20)),void 0!==n)return n(e,i)};var i=r.options.stop;r.options.stop=function(e,n){if(void 0!==r.dragging&&ko.isWritableObservable(r.dragging)&&isDraggingHelper(r.dragging,e),void 0!==r.dropContainer&&global.clearInterval(r.scrollInterval),void 0!==i)return i(e,n)};var o=r.options.drag;return r.options.drag=function(e,n){if(void 0!==r.dropContainer){var i=e.pageY-$(r.dropContainer).offset().top,t=i-$(r.dropContainer).height();r.adding=i<-20?-20:i<0?-10:i<10?-5:t>20?20:t>0?10:t>-10?5:0}if(void 0!==o)return o(e,n)},r}};ko.bindingHandlers.extsortable={init:function(e,r,n,i,o){return ko.bindingHandlers.sortable.init(e,makeExtendedValueAccessor(r),n,i,o)},update:function(e,r,n,i,o){return ko.bindingHandlers.sortable.update(e,makeExtendedValueAccessor(r),n,i,o)}},ko.bindingHandlers.extdraggable={init:function(e,r,n,i,o){return ko.bindingHandlers.draggable.init(e,makeExtendedValueAccessor(r),n,i,o)},update:function(e,r,n,i,o){return ko.bindingHandlers.draggable.update(e,makeExtendedValueAccessor(r),n,i,o)}};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4dHNvcnRhYmxlcy5qcyJdLCJuYW1lcyI6WyIkIiwicmVxdWlyZSIsImtvIiwic29ydGFibGUiLCJkcmFnZ2FibGUiLCJjb25zb2xlIiwiaXNEcmFnZ2luZ0hlbHBlciIsIndyaXRhYmxlIiwiZSIsInR5cGUiLCJzdWJzdHJpbmciLCJtYWtlRXh0ZW5kZWRWYWx1ZUFjY2Vzc29yIiwidmFsdWVBY2Nlc3NvciIsIm1vZGVsVmFsdWUiLCJ1dGlscyIsInBlZWtPYnNlcnZhYmxlIiwidW53cmFwT2JzZXJ2YWJsZSIsIm9wdGlvbnMiLCJvcmlnU3RhcnQiLCJzdGFydCIsInVpIiwiZHJhZ2dpbmciLCJpc1dyaXRhYmxlT2JzZXJ2YWJsZSIsImRyb3BDb250YWluZXIiLCJzY3JvbGxJbnRlcnZhbCIsImdsb2JhbCIsInNldEludGVydmFsIiwiZm9vIiwic2Nyb2xsVG9wIiwiYWRkaW5nIiwib3JpZ1N0b3AiLCJzdG9wIiwiY2xlYXJJbnRlcnZhbCIsIm9yaWdEcmFnIiwiZHJhZyIsInRvcCIsInBhZ2VZIiwib2Zmc2V0IiwiYm90dG9tIiwiaGVpZ2h0IiwiYmluZGluZ0hhbmRsZXJzIiwiZXh0c29ydGFibGUiLCJpbml0IiwiZWxlbWVudCIsImFsbEJpbmRpbmdzQWNjZXNzb3IiLCJkYXRhIiwiY29udGV4dCIsInVwZGF0ZSIsImV4dGRyYWdnYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsYUFHQSxJQUFJQSxFQUFJQyxRQUFRLFVBQ1pDLEdBQUtELFFBQVEsWUFDYkUsU0FBV0YsUUFBUSxpQ0FDbkJHLFVBQVlILFFBQVEsa0NBQ3BCSSxRQUFVSixRQUFRLFdBR3RCLEdBRkFBLFFBQVEsMEJBRWUsSUFBWkUsU0FBeUIsS0FBTSxvREFDMUMsUUFBd0IsSUFBYkMsVUFBMEIsS0FBTSxvREFFM0MsSUFBSUUsaUJBQW1CLFNBQVNDLEVBQVVDLEdBQ3BDRCxJQUNFQyxFQUFFQyxNQUFRRixJQUFhLFFBQVFBLEdBQVMsR0FFOUIsYUFBVkMsRUFBRUMsTUFBaUMsYUFBVkQs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",
"\"use strict\";var $=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),console=require('console-browserify');ko.bindingHandlers.preloader={init:function(e,i){var o=i();if(void 0===o.preloaded){o.preloaded=ko.observable(\"\");var r=function(e){if(e!=o.preloaded())if(\"\"!==e){var i=new Image;i.onload=function(){o.preloaded(e)},i.onerror=function(){o.preloaded(e)},i.src=e}else o.preloaded(e)};o.subscribe(r),r(o())}}},ko.bindingHandlers.advattr={init:function(e,i,o,r,l){var a=ko.utils.unwrapObservable(i()||{});ko.utils.objectForEach(a,function(i,o){var r=e.getAttribute(i);if(ko.isWriteableObservable(o)){var l=o();l!=r&&(o(r),null!==l&&console.log(\"AdvAttr found a value different from the default\",i,l,r))}})},update:function(e,i,o){var r=ko.utils.unwrapObservable(i())||{};ko.utils.objectForEach(r,function(i,o){!1===(o=ko.utils.unwrapObservable(o))||null===o||void 0===o?e.removeAttribute(i):e.setAttribute(i,o.toString())})}},ko.bindingHandlers.advstyle={init:function(e,i,o,r,l){var a=ko.utils.unwrapObservable(i()||{});ko.utils.objectForEach(a,function(i,o){var r;if(i.match(/Px$/)?(i=i.substr(0,i.length-2),(r=e.style[i]).match(/px$/)?r=r.replace(/px$/,\"\"):console.log(\"AdvStyle binding found an unexpected default value\",i,r,e)):r=e.style[i],ko.isWriteableObservable(o)){var l=o();l!=r&&(o(r),null!==l&&console.log(\"AdvStyle found a value different from the default\",i,l,r))}})},update:function(e,i){var o=ko.utils.unwrapObservable(i()||{});ko.utils.objectForEach(o,function(i,o){null!==(o=ko.utils.unwrapObservable(o))&&void 0!==o&&!1!==o||(o=\"\"),i.match(/Px$/)&&(i=i.substr(0,i.length-2),o+=\"px\"),e.style[i]=o})}},ko.bindingHandlers.domlog={init:function(e,i){console.log(\"initialized\",e),ko.utils.domNodeDisposal.addDisposeCallback(e,function(){console.log(\"disposed\",e)})}},ko.bindingHandlers.fudroppable={init:function(e,i){var o=i()||{},r={},l=function(e,i,o,r,l,a){e[i]?global.clearTimeout(e[i]):(void 0!==r&&o.classList.add(r),ko.isWriteableObservable(l)&&!l()&&l(!0));var t=function(){e[i]=null,void 0!==r&&o.classList.remove(r),ko.isWriteableObservable(l)&&l()&&l(!1)};\"dragleave\"==a.type?t():e[i]=global.setTimeout(t,500)};(o.active||o.activeClass)&&ko.utils.registerEventHandler(global,\"dragover\",l.bind(void 0,r,\"activeTimeout\",e,o.activeClass,o.active)),o.hoverClass&&ko.utils.registerEventHandler(e,\"dragover dragenter dragleave\",l.bind(void 0,r,\"hoverTimeout\",e,o.hoverClass,void 0))}},ko.bindingHandlers.fileupload={extendOptions:{},remoteFilePreprocessor:function(e){return e},init:function(e,i){ko.utils.domNodeDisposal.addDisposeCallback(e,function(){$(e).fileupload(\"destroy\")}),global.webkitURL?$(e).attr(\"title\",\" \"):$(e).attr(\"title\",\"\")},update:function(e,i){var o=i()||{},r=$(e),l=r.parents(\".uploadzone\"),a=o.data;o.data=void 0;var t=o.canvasPreview;ko.utils.extend(o,{url:\"/upload/\",dataType:\"json\",dropZone:l.find(\".mo-uploadzone\")[0],autoUpload:!0,acceptFileTypes:/(\\.|\\/)(gif|jpe?g|png)$/i,maxFileSize:1048576,disableImageResize:/Android(?!.*Chrome)|Opera/.test(global.navigator.userAgent),previewMaxWidth:200,previewMaxHeight:200,previewCrop:!1,replaceFileInput:!1,messages:{unknownError:\"Unknown error\",uploadedBytes:\"Uploaded bytes exceed file size\",maxNumberOfFiles:\"Maximum number of files exceeded\",acceptFileTypes:\"File type not allowed\",maxFileSize:\"File is too large\",minFileSize:\"File is too small\",post_max_size:\"The uploaded file exceeds the post_max_size directive in php.ini\",max_file_size:\"File is too big\",min_file_size:\"File is too small\",accept_file_types:\"Filetype not allowed\",max_number_of_files:\"Maximum number of files exceeded\",max_width:\"Image exceeds maximum width\",min_width:\"Image requires a minimum width\",max_height:\"Image exceeds maximum height\",min_height:\"Image requires a minimum height\",abort:\"File upload aborted\",image_resize:\"Failed to resize image\",generic:\"Unexpected upload error\"}}),ko.utils.extend(o,ko.bindingHandlers.fileupload.extendOptions);var n=0,s=\"\",d=function(){0==--n&&(a&&a(s),s=\"\",t&&(l.find(\"img\").show(),l.find(\"canvas\").remove()),l.removeClass(\"uploading\"),l.find(\".progress-bar\").css(\"width\",0))},u=function(e){if(\"object\"==typeof o.messages&&null!==o.messages){var i=e.match(/^([^ ]+)(.*)$/);if(i&&void 0!==o.messages[i[1]])return o.messages[i[1]]+i[2]}return e};r.fileupload(o);for(var p=[\"fileuploadadd\",\"fileuploadprocessalways\",\"fileuploadprogressall\",\"fileuploaddone\",\"fileuploadfail\"],f=function(e,i){if(\"fileuploadadd\"==e.type&&n++,\"fileuploadfail\"==e.type&&(console.log(\"fileuploadfail\",e,i),o.onerror&&(\"\"===i.errorThrown&&\"error\"==i.textStatus?o.onerror(u(\"generic\")):o.onerror(u(\"generic (\"+i.errorThrown+\")\"))),d()),\"fileuploaddone\"==e.type)if(void 0!==i.result.files[0].url){if(o.onfile)for(var r=0;r<i.result.files.length;r++)i.result.files[r]=ko.bindingHandlers.fileupload.remoteFilePreprocessor(i.result.files[r]),o.onfile(i.result.files[r]);if(\"\"===s&&(s=i.result.files[0].url),t){var a=new Image;a.onload=d,a.onerror=d,a.src=i.result.files[0].url}else d()}else void 0!==i.result.files[0].error?(console.log(\"remote error\",e,i),o.onerror&&o.onerror(u(i.result.files[0].error)),d()):(console.log(\"unexpected error\",e,i),o.onerror&&o.onerror(u(\"generic (Unexpected Error retrieving uploaded file)\")),d());if(\"fileuploadprocessalways\"==e.type){var p=i.index,f=i.files[p];if(f.preview&&0===p&&0===l.find(\"canvas\").length){if(t){var c=$(f.preview).css(\"width\",\"100%\");l.find(\"img\").hide(),l.prepend(c)}l.addClass(\"uploading\"),l.find(\".progress-bar\").css(\"width\",0)}f.error&&(o.onerror&&o.onerror(u(f.error)),d())}if(\"fileuploadprogressall\"==e.type){var v=parseInt(i.loaded/i.total*100,10);l.find(\".progress-bar\").css(\"width\",v+\"%\")}},c=p.length-1;c>=0;c--){var v=p[c];r.on(v,f)}$.support.fileInput||r.prop(\"disabled\",!0).parent().addClass(\"disabled\")}};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGV1cGxvYWQuanMiXSwibmFtZXMiOlsiJCIsInJlcXVpcmUiLCJrbyIsImNvbnNvbGUiLCJiaW5kaW5nSGFuZGxlcnMiLCJpbml0IiwiZWxlbWVudCIsInZhbHVlQWNjZXNzb3IiLCJ2YWx1ZSIsInByZWxvYWRlZCIsIm9ic2VydmFibGUiLCJwcmVsb2FkZXIiLCJuZXdWYWx1ZSIsImltZyIsIkltYWdlIiwib25sb2FkIiwib25lcnJvciIsInNyYyIsInN1YnNjcmliZSIsImFsbEJpbmRpbmdzIiwidmlld01vZGVsIiwiYmluZGluZ0NvbnRleHQiLCJ1dGlscyIsInVud3JhcE9ic2VydmFibGUiLCJvYmplY3RGb3JFYWNoIiwiYXR0ck5hbWUiLCJhdHRyVmFsdWVBY2Nlc3NvciIsImF0dHJWYWx1ZSIsImdldEF0dHJpYnV0ZSIsImlzV3JpdGVhYmxlT2JzZXJ2YWJsZSIsIm9sZFZhbHVlIiwibG9nIiwidXBkYXRlIiwidW5kZWZpbmVkIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwidG9TdHJpbmciLCJzdHlsZU5hbWUiLCJzdHlsZVZhbHVlQWNjZXNzb3IiLCJzdHlsZVZhbHVlIiwibWF0Y2giLCJzdWJzdHIiLCJsZW5ndGgiLCJzdHlsZSIsInJlcGxhY2UiLCJkb21Ob2RlRGlzcG9zYWwiLCJhZGREaXNwb3NlQ2FsbGJhY2siLCJvcHQiLCJ0aW1lb3V0c09iaiIsIm92ZXIiLCJ0aW1lb3V0cyIsImRyb3Bab25lVGltZW91dCIsImNsYXNzTmFtZSIsImV2ZW50IiwiZ2xvYmFsIiwiY2xlYXJUaW1lb3V0IiwiY2xhc3NMaXN0IiwiYWRkIiwic3RvcCIsInJlbW92ZSIsInR5cGUiLCJzZXRUaW1lb3V0IiwiYWN0aXZlIiwiYWN0aXZlQ2xhc3MiLCJyZWdpc3RlckV2ZW50SGFuZGxlciIsImJpbmQiLCJob3ZlckNsYXNzIiwiZXh0ZW5kT3B0aW9ucyIsInJlbW90ZUZpbGVQcmVwcm9jZXNzb3IiLCJ1cmwiLCJmaWxldXBsb2FkIiwid2Via2l0VVJMIiwiYXR0ciIsIm9wdGlvbnMiLCIkZnUiLCIkcGFyZW50IiwicGFyZW50cyIsImRhdGFWYWx1ZSIsImRhdGEiLCJjYW52YXNQcmV2aWV3IiwiZXh0ZW5kIiwiZGF0YVR5cGUiLCJkcm9wWm9uZSIsImZpbmQiLCJhdXRvVXBsb2FkIiwiYWNjZXB0RmlsZVR5cGVzIiwibWF4RmlsZVNpemUiLCJkaXNhYmxlSW1hZ2VSZXNpemUiLCJ0ZXN0IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwicHJldmlld01heFdpZHRoIiwicHJldmlld01heEhlaWdodCIsInByZXZpZXdDcm9wIiwicmVwbGFjZUZpbGVJbnB1dCIsIm1lc3NhZ2VzIiwidW5rbm93bkVycm9yIiwidXBsb2FkZWRCeXRlcyIsIm1heE51bWJlck9mRmlsZXMiLCJtaW5GaWxlU2l6ZSIsInBvc3RfbWF4X3NpemUiLCJtYXhfZmlsZV9zaXplIiwibWluX2ZpbGVfc2l6ZSIsImFjY2VwdF9maWxlX3R5cGVzIiwibWF4X251bWJlcl9vZl9maWxlcyIsIm1heF93aWR0aCIsIm1pbl93aWR0aCIsIm1heF9oZWlnaHQiLCJtaW5faGVpZ2h0IiwiYWJvcnQiLCJpbWFnZV9yZXNpemUiLCJnZW5lcmljIiwid29ya2luZyIsImZpcnN0V29ya2VkIiwiY2xlYW51cCIsInNob3ciLCJyZW1vdmVDbGFzcyIsImNzcyIsInRyYW5zbGF0ZWRNZXNzYWdlIiwidGV4dCIsImV2ZW50cyIsImV2ZW50SGFuZGxlciIsImUiLCJlcnJvclRocm93biIsInRleHRTdGF0dXMiLCJyZXN1bHQiLCJmaWxlcyIsIm9uZmlsZSIsImkiLCJlcnJvciIsImluZGV4IiwiZmlsZSIsInByZXZpZXciLCJlbCIsImhpZGUiLCJwcmVwZW5kIiwiYWRkQ2xhc3MiLCJwcm9ncmVzcyIsInBhcnNlSW50IiwibG9hZGVkIiwidG90YWwiLCJldmVudE5hbWUiLCJvbiIsInN1cHBvcnQiLCJmaWxlSW5wdXQiLCJwcm9wIiwicGFyZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxhQVlBLElBQUlB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",
"\"use strict\";var beforeSubscriptionProp,afterSubscriptionProp,ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),console=require('console-browserify');if(ko.bindingHandlers.ifSubs={cloneNodes:function(o,e){for(var i=0,r=o.length,n=[];i<r;i++){var s=o[i].cloneNode(!0);n.push(e?ko.cleanNode(s):s)}return n},init:function(o,e,i,r,n){var s,t,u=e();return void 0===u.data.subsCount&&ko.extenders.subscriptionsCount(u.data),ko.computed(function(){var i,r,b=ko.utils.unwrapObservable(e().data.subsCount),p=!t;r=-(void 0!==e().gutter?e().gutter:1),i=b+(s?r:0)>=ko.utils.unwrapObservable(u.threshold),void 0!==e().not&&e().not&&(i=!i),(p||i!==s)&&(p&&ko.computedContext.getDependenciesCount()&&(t=ko.bindingHandlers.ifSubs.cloneNodes(ko.virtualElements.childNodes(o),!0)),i?(p||ko.virtualElements.setDomNodeChildren(o,ko.bindingHandlers.ifSubs.cloneNodes(t)),ko.applyBindingsToDescendants(n,o)):ko.virtualElements.emptyNode(o),s=i)},null,{disposeWhenNodeIsRemoved:o}),{controlsDescendantBindings:!0}}},ko.virtualElements.allowedBindings.ifSubs=!0,\"function\"==typeof ko.subscription&&void 0!==ko.isWritableObservable)beforeSubscriptionProp=\"beforeSubscriptionAdd\",afterSubscriptionProp=\"afterSubscriptionRemove\";else if(\"3.2.0\"==ko.version)beforeSubscriptionProp=\"va\",afterSubscriptionProp=\"nb\";else if(\"3.3.0\"==ko.version)beforeSubscriptionProp=\"ja\",afterSubscriptionProp=\"ua\";else if(\"3.4.0\"==ko.version)beforeSubscriptionProp=\"sa\",afterSubscriptionProp=\"Ia\";else if(\"3.4.1\"==ko.version)beforeSubscriptionProp=\"sa\",afterSubscriptionProp=\"Ia\";else if(\"3.4.2\"==ko.version)beforeSubscriptionProp=\"ua\",afterSubscriptionProp=\"Ka\";else{if(\"3.5.0-beta\"!=ko.version)throw\"Unsupported minimized Knockout version \"+ko.version+\" (supported DEBUG or minimized 3.2.0 ... 3.5.0-beta)\";beforeSubscriptionProp=\"Pa\",afterSubscriptionProp=\"ab\"}ko.extenders.subscriptionsCount=function(o,e,i){if(void 0===o.subsCount){o.subsCount=ko.observable(o.getSubscriptionsCount()).extend({notify:\"always\"});var r=o[beforeSubscriptionProp],n=o[afterSubscriptionProp];o[beforeSubscriptionProp]=function(n){r&&r.call(o,n);var s=o.getSubscriptionsCount()+1;void 0!==e&&s!=e&&void 0!==i&&s!=i||o.subsCount(s)},o[afterSubscriptionProp]=function(r){n&&n.call(o,r);var s=o.getSubscriptionsCount();void 0!==e&&s!=e&&void 0!==i&&s!=i||o.subsCount(s)}}else console.log(\"already applied subscriptionCount to observable\");return null};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlmLXN1YnMuanMiXSwibmFtZXMiOlsiYmVmb3JlU3Vic2NyaXB0aW9uUHJvcCIsImFmdGVyU3Vic2NyaXB0aW9uUHJvcCIsImtvIiwicmVxdWlyZSIsImNvbnNvbGUiLCJiaW5kaW5nSGFuZGxlcnMiLCJjbG9uZU5vZGVzIiwibm9kZXNBcnJheSIsInNob3VsZENsZWFuTm9kZXMiLCJpIiwiaiIsImxlbmd0aCIsIm5ld05vZGVzQXJyYXkiLCJjbG9uZWROb2RlIiwiY2xvbmVOb2RlIiwicHVzaCIsImNsZWFuTm9kZSIsImluaXQiLCJlbGVtZW50IiwidmFsdWVBY2Nlc3NvciIsImFsbEJpbmRpbmdzIiwidmlld01vZGVsIiwiYmluZGluZ0NvbnRleHQiLCJkaWREaXNwbGF5T25MYXN0VXBkYXRlIiwic2F2ZWROb2RlcyIsInZhbHVlQWNjIiwiZGF0YSIsInN1YnNDb3VudCIsImV4dGVuZGVycyIsImNvbXB1dGVkIiwic2hvdWxkRGlzcGxheSIsImd1dHRlciIsImRhdGFWYWx1ZSIsInV0aWxzIiwidW53cmFwT2JzZXJ2YWJsZSIsImlzRmlyc3RSZW5kZXIiLCJ0aHJlc2hvbGQiLCJub3QiLCJjb21wdXRlZENvbnRleHQiLCJnZXREZXBlbmRlbmNpZXNDb3VudCIsInZpcnR1YWxFbGVtZW50cyIsImNoaWxkTm9kZXMiLCJzZXREb21Ob2RlQ2hpbGRyZW4iLCJhcHBseUJpbmRpbmdzVG9EZXNjZW5kYW50cyIsImVtcHR5Tm9kZSIsImRpc3Bvc2VXaGVuTm9kZUlzUmVtb3ZlZCIsImNvbnRyb2xzRGVzY2VuZGFudEJpbmRpbmdzIiwiYWxsb3dlZEJpbmRpbmdzIiwic3Vic2NyaXB0aW9uIiwiaXNXcml0YWJsZU9ic2VydmFibGUiLCJ2ZXJzaW9uIiwidGFyZ2V0IiwibDEiLCJsMiIsIm9ic2VydmFibGUiLCJnZXRTdWJzY3JpcHRpb25zQ291bnQiLCJleHRlbmQiLCJub3RpZnkiLCJ1bmRlcmx5aW5nQmVmb3JlU3Vic2NyaXB0aW9uQWRkRnVuY3Rpb24iLCJ1bmRlcmx5aW5nQWZ0ZXJTdWJzY3JpcHRpb25SZW1vdmVGdW5jdGlvbiIsImV2ZW50IiwiY2FsbCIsImMiLCJsb2ciXSwibWFwcGluZ3MiOiJBQUFBLGFBRUEsSUFnRUlBLHVCQUNBQyxzQkFqRUFDLEdBQUtDLFFBQVEsWUFDYkMsUUFBVUQsUUFBUSxXQWlFdEIsR0EvREFELEdBQUdHLGdCQUF3QixRQUV6QkMsV0FBWSxTQUFTQyxFQUFZQyxHQUMvQixJQUFLLElBQUlDLEVBQUksRUFBR0MsRUFBSUgsRUFBV0ksT0FBUUMsS0FBb0JILEVBQUlDLEVBQUdELElBQUssQ0FDckUsSUFBSUksRUFBYU4sRUFBV0UsR0FBR0ssV0FBVSxHQUN6Q0YsRUFBY0csS0FBS1AsRUFBbUJOLEdBQUdjLFVBQVVILEdBQWNBLEdBRW5FLE9BQU9ELEdBRVRLLEtBQVEsU0FBU0MsRUFBU0MsRUFBZUMsRUFBYUMsRUFBV0MsR0FDL0QsSUFBSUMsRUFDRkMsRUFDQUMsRUFBV04sSUFxQ2IsWUFwQ3VDLElBQTVCTSxFQUFTQyxLQUFLQyxXQUN2QnpCLEdBQUcwQixVQUE4QixtQkFBRUgsRUFBU0MsTUFHOUN4QixHQUFHMkIsU0FBUyxXQUNWLElBRUVDLEVBQTZCQyxFQUYzQkMsRUFBWTlCLEdBQUcrQixNQUFNQyxpQkFBaUJmLElBQWdCTyxLQUFLQyxXQUM3RFEsR0FBaUJYLEVBR25CTyxTQUE2QyxJQUEzQlosSUFBZ0JZLE9BQXlCWixJQUFnQlksT0FBUyxHQUNwRkQsRUFBZ0JFLEdBQWFULEVBQXlCUSxFQUFTLElBQU03QixHQUFHK0IsTUFBTUMsaUJBQWlCVCxFQUFTVyxnQkFDckUsSUFBeEJqQixJQUFnQmtCLEtBQXVCbEIsSUFBZ0JrQixNQUNoRVAsR0FBaUJBLElBRUpLLEdBQWtCTCxJQUFrQlAsS0FJN0NZLEdBQWlCakMsR0FBR29DLGdCQUFnQkMseUJBQ3RDZixFQUFhdEIsR0FBR0csZ0JBQXdCLE9BQUVDLFdBQVdKLEdBQUdzQyxnQkFBZ0JDLFdBQVd2QixJQUFVLElBRzNGWSxHQUNHSyxHQUNIakMsR0FBR3NDLGdCQUFnQkUsbUJBQW1CeEIsRUFBU2hCLEdBQUdHLGdCQUF3QixPQUFFQyxXQUFXa0IsSUFFekZ0QixHQUFHeUMsMkJBQTJCckIsRUFBZ0JKLElBRTlDaEIsR0FBR3NDLGdCQUFnQkksVUFBVTFCLEdBRy9CSyxFQUF5Qk8sSUFFMUIsTUFDRGUseUJBQTBCM0IsS0FHMUI0Qiw0QkFBOEIsS0FJcEM1QyxHQUFHc0MsZ0JBQWdCTyxnQkFBd0IsUUFBSSxFQVNqQixtQkFBbkI3QyxHQUFHOEMsbUJBQWlFLElBQTVCOUMsR0FBRytDLHFCQUNwRGpELHVCQUF5Qix3QkFDekJDLHNCQUF3QiwrQkFDbkIsR0FBa0IsU0FBZEMsR0FBR2dELFFBQ1psRCx1QkFBeUIsS0FDekJDLHNCQUF3QixVQUNuQixHQUFrQixTQUFkQyxHQUFHZ0QsUUFDWmxELHVCQUF5QixLQUN6QkMsc0JBQXdCLFVBQ25CLEdBQWtCLFNBQWRDLEdBQUdnRCxRQUNabEQsdUJBQXlCLEtBQ3pCQyxzQkFBd0IsVUFDbkIsR0FBa0IsU0FBZEMsR0FBR2dELFFBQ1psRCx1QkFBeUIsS0FDekJDLHNCQUF3QixVQUNuQixHQUFrQixTQUFkQyxHQUFHZ0QsUUFDWmxELHVCQUF5QixLQUN6QkMsc0JBQXdCLFNBQ25CLENBQUEsR0FBa0IsY0FBZEMsR0FBR2dELFFBSVQsS0FBTSwwQ0FBNENoRCxHQUFHZ0QsUUFBVSx1REFIbEVsRCx1QkFBeUIsS0FDekJDLHNCQUF3QixLQU0xQkMsR0FBRzBCLFVBQThCLG1CQUFJLFNBQVN1QixFQUFRQyxFQUFJQyxHQUN4RCxRQUFnQyxJQUFyQkYsRUFBT3hCLFVBQTJCLENBQzNDd0IsRUFBT3hCLFVBQVl6QixHQUFHb0QsV0FBV0gsRUFBT0kseUJBQXlCQyxRQUMvREMsT0FBUSxXQUVWLElBQUlDLEVBQTBDUCxFQUFPbkQsd0JBQ2pEMkQsRUFBNENSLEVBQU9sRCx1QkFDdkRrRCxFQUFPbkQsd0JBQTBCLFNBQVM0RCxHQUNwQ0YsR0FBeUNBLEVBQXdDRyxLQUFLVixFQUFRUyxHQUNsRyxJQUFJRSxFQUFJWCxFQUFPSSx3QkFBMEIsT0FDdkIsSUFBUEgsR0FBc0JVLEdBQUtWLFFBQW9CLElBQVBDLEdBQXNCUyxHQUFLVCxHQUFJRixFQUFPeEIsVUFBVW1DLElBRXJHWCxFQUFPbEQsdUJBQXlCLFNBQVMyRCxHQUNuQ0QsR0FBMkNBLEVBQTBDRSxLQUFLVixFQUFRUyxHQUN0RyxJQUFJRSxFQUFJWCxFQUFPSSw2QkFDRyxJQUFQSCxHQUFzQlUsR0FBS1YsUUFBb0IsSUFBUEMsR0FBc0JTLEdBQUtULEdBQUlGLEVBQU94QixVQUFVbUMsU0FHckcxRCxRQUFRMkQsSUFBSSxtREFFZCxPQUFPIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL2JpbmRpbmdzL2lmLXN1YnMuanMifQ==",
"\"use strict\";var $=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),spinner=(typeof window !== \"undefined\" ? window['jQuery']['ui']['spinner'] : typeof global !== \"undefined\" ? global['jQuery']['ui']['spinner'] : null),console=require('console-browserify');if(void 0===spinner)throw\"Cannot find jquery-ui spinner widget dependency!\";$.widget(\"ui.spinner\",spinner,{_adjustValue:function(i){this._super(i);var e=this.options;return i=parseFloat(i.toFixed(this._precision())),null!==e.max&&i>e.max?e.max:null!==e.min&&i<e.min?e.min:i}});\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpxdWVyeXVpLXNwaW5uZXIuanMiXSwibmFtZXMiOlsiJCIsInJlcXVpcmUiLCJzcGlubmVyIiwiY29uc29sZSIsIndpZGdldCIsIl9hZGp1c3RWYWx1ZSIsInZhbHVlIiwidGhpcyIsIl9zdXBlciIsIm9wdGlvbnMiLCJwYXJzZUZsb2F0IiwidG9GaXhlZCIsIl9wcmVjaXNpb24iLCJtYXgiLCJtaW4iXSwibWFwcGluZ3MiOiJBQUFBLGFBS0EsSUFBSUEsRUFBSUMsUUFBUSxVQUNaQyxRQUFVRCxRQUFRLGdDQUNsQkUsUUFBVUYsUUFBUSxXQUV0QixRQUFzQixJQUFYQyxRQUF3QixLQUFNLG1EQUV6Q0YsRUFBRUksT0FBTyxhQUFjRixTQUNyQkcsYUFBYyxTQUFTQyxHQUNYQyxLQUFLQyxPQUFPRixHQUF0QixJQUVJRyxFQUFVRixLQUFLRSxRQU1uQixPQUhBSCxFQUFRSSxXQUFXSixFQUFNSyxRQUFRSixLQUFLSyxlQUdsQixPQUFoQkgsRUFBUUksS0FBZ0JQLEVBQVFHLEVBQVFJLElBQ25DSixFQUFRSSxJQUVHLE9BQWhCSixFQUFRSyxLQUFnQlIsRUFBUUcsRUFBUUssSUFDbkNMLEVBQVFLLElBR1ZSIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL2JpbmRpbmdzL2pxdWVyeXVpLXNwaW5uZXIuanMifQ==",
"\"use strict\";var $=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),console=require('console-browserify'),tabs=(typeof window !== \"undefined\" ? window['jQuery']['ui']['tabs'] : typeof global !== \"undefined\" ? global['jQuery']['ui']['tabs'] : null);if(void 0===tabs)throw\"Cannot find jquery-ui tabs widget dependency!\";$.widget(\"ui.tabs\",tabs,{_isLocal:function(e){return\"true\"==e.getAttribute(\"data-local\")||this._superApply(arguments)}});\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpxdWVyeXVpLXRhYnMuanMiXSwibmFtZXMiOlsiJCIsInJlcXVpcmUiLCJjb25zb2xlIiwidGFicyIsIndpZGdldCIsIl9pc0xvY2FsIiwiYW5jaG9yIiwiZ2V0QXR0cmlidXRlIiwidGhpcyIsIl9zdXBlckFwcGx5IiwiYXJndW1lbnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUtBLElBQUlBLEVBQUlDLFFBQVEsVUFDWkMsUUFBVUQsUUFBUSxXQUNsQkUsS0FBT0YsUUFBUSw2QkFFbkIsUUFBbUIsSUFBUkUsS0FBcUIsS0FBTSxnREFFdENILEVBQUVJLE9BQU8sVUFBV0QsTUFDbEJFLFNBQVUsU0FBVUMsR0FDbEIsTUFBeUMsUUFBckNBLEVBQU9DLGFBQWEsZUFDWkMsS0FBS0MsWUFBYUMiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvYmluZGluZ3MvanF1ZXJ5dWktdGFicy5qcyJ9",
"\"use strict\";function pushTemplate(e,t){var n=global.document.createElement(\"script\");n.setAttribute(\"type\",\"text/html\"),n.setAttribute(\"id\",e),n.text=t,global.document.body.appendChild(n)}function removeTemplate(e){var t=global.document.getElementById(e);t&&t.parentNode.removeChild(t)}function init(){}function getTemplateContent(e){var t=global.document.getElementById(e);return t?t.innerHTML:void 0}module.exports={init:init,addTemplate:pushTemplate,removeTemplate:removeTemplate,getTemplateContent:getTemplateContent};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjcmlwdC10ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJwdXNoVGVtcGxhdGUiLCJ0ZW1wbGF0ZU5hbWUiLCJ0ZW1wbGF0ZVRleHQiLCJzY3JpcHRUYWciLCJnbG9iYWwiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJ0ZXh0IiwiYm9keSIsImFwcGVuZENoaWxkIiwicmVtb3ZlVGVtcGxhdGUiLCJlbCIsImdldEVsZW1lbnRCeUlkIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwiaW5pdCIsImdldFRlbXBsYXRlQ29udGVudCIsImlkIiwiaW5uZXJIVE1MIiwibW9kdWxlIiwiZXhwb3J0cyIsImFkZFRlbXBsYXRlIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUdBLFNBQVNBLGFBQWFDLEVBQWNDLEdBQ2xDLElBQUlDLEVBQVlDLE9BQU9DLFNBQVNDLGNBQWMsVUFDOUNILEVBQVVJLGFBQWEsT0FBUSxhQUMvQkosRUFBVUksYUFBYSxLQUFNTixHQUM3QkUsRUFBVUssS0FBT04sRUFDakJFLE9BQU9DLFNBQVNJLEtBQUtDLFlBQVlQLEdBR25DLFNBQVNRLGVBQWVWLEdBQ3RCLElBQUlXLEVBQUtSLE9BQU9DLFNBQVNRLGVBQWVaLEdBQ3BDVyxHQUFJQSxFQUFHRSxXQUFXQyxZQUFZSCxHQUdwQyxTQUFTSSxRQUVULFNBQVNDLG1CQUFtQkMsR0FDMUIsSUFBSU4sRUFBS1IsT0FBT0MsU0FBU1EsZUFBZUssR0FDeEMsT0FBSU4sRUFBV0EsRUFBR08sZUFDYixFQUdQQyxPQUFPQyxTQUNMTCxLQUFNQSxLQUNOTSxZQUFhdEIsYUFDYlcsZUFBZ0JBLGVBQ2hCTSxtQkFBb0JBIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL2JpbmRpbmdzL3NjcmlwdC10ZW1wbGF0ZS5qcyJ9",
"\"use strict\";var timeout,ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),$=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),console=require('console-browserify'),tinymce=(typeof window !== \"undefined\" ? window['tinymce'] : typeof global !== \"undefined\" ? global['tinymce'] : null),render=function(){if(timeout=void 0,void 0!==tinymce.activeEditor&&null!==tinymce.activeEditor&&void 0!==tinymce.activeEditor.theme&&null!==tinymce.activeEditor.theme&&void 0!==tinymce.activeEditor.theme.panel&&null!==tinymce.activeEditor.theme.panel){(void 0!==tinymce.activeEditor.theme.panel._visible&&tinymce.activeEditor.theme.panel._visible&&tinymce.activeEditor.theme.panel._fixed||void 0!==tinymce.activeEditor.theme.panel.state&&tinymce.activeEditor.theme.panel.state.get(\"visible\")&&tinymce.activeEditor.theme.panel.state.get(\"fixed\"))&&tinymce.activeEditor.theme.panel.fixed(!1);var e=void 0!==tinymce.activeEditor.bodyElement?tinymce.activeEditor.bodyElement:tinymce.activeEditor.dom.settings.root_element;null!==e&&void 0!==e.classList&&e.classList.contains(\"mce-edit-focus\")&&(tinymce.activeEditor.nodeChanged(),tinymce.activeEditor.theme.panel.visible(!0),tinymce.activeEditor.theme.panel.layoutRect().y<=40&&tinymce.activeEditor.theme.panel.moveBy(0,40-tinymce.activeEditor.theme.panel.layoutRect().y))}};ko.bindingHandlers.wysiwygScrollfix={scroll:function(e){timeout&&global.clearTimeout(timeout),timeout=global.setTimeout(render,50)},init:function(e){ko.utils.domNodeDisposal.addDisposeCallback(e,function(){$(e).off(\"scroll\",ko.bindingHandlers.wysiwygScrollfix.scroll)}),$(e).on(\"scroll\",ko.bindingHandlers.wysiwygScrollfix.scroll)}};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjcm9sbGZpeC5qcyJdLCJuYW1lcyI6WyJ0aW1lb3V0Iiwia28iLCJyZXF1aXJlIiwiJCIsImNvbnNvbGUiLCJ0aW55bWNlIiwicmVuZGVyIiwidW5kZWZpbmVkIiwiYWN0aXZlRWRpdG9yIiwidGhlbWUiLCJwYW5lbCIsIl92aXNpYmxlIiwiX2ZpeGVkIiwic3RhdGUiLCJnZXQiLCJmaXhlZCIsImVsZW1lbnQiLCJib2R5RWxlbWVudCIsImRvbSIsInNldHRpbmdzIiwicm9vdF9lbGVtZW50IiwiY2xhc3NMaXN0IiwiY29udGFpbnMiLCJub2RlQ2hhbmdlZCIsInZpc2libGUiLCJsYXlvdXRSZWN0IiwieSIsIm1vdmVCeSIsImJpbmRpbmdIYW5kbGVycyIsInd5c2l3eWdTY3JvbGxmaXgiLCJzY3JvbGwiLCJldmVudCIsImdsb2JhbCIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJpbml0IiwidXRpbHMiLCJkb21Ob2RlRGlzcG9zYWwiLCJhZGREaXNwb3NlQ2FsbGJhY2siLCJvZmYiLCJvbiJdLCJtYXBwaW5ncyI6IkFBQUEsYUFHQSxJQUtJQSxRQUxBQyxHQUFLQyxRQUFRLFlBQ2JDLEVBQUlELFFBQVEsVUFDWkUsUUFBVUYsUUFBUSxXQUNsQkcsUUFBVUgsUUFBUSxXQWNsQkksT0FBUyxXQUlYLEdBRkFOLGFBQVVPLE9BRTBCLElBQXpCRixRQUFRRyxjQUF5RCxPQUF6QkgsUUFBUUcsbUJBQ2pCLElBQS9CSCxRQUFRRyxhQUFhQyxPQUF3RCxPQUEvQkosUUFBUUcsYUFBYUMsWUFDOUIsSUFBckNKLFFBQVFHLGFBQWFDLE1BQU1DLE9BQThELE9BQXJDTCxRQUFRRyxhQUFhQyxNQUFNQyxNQUFnQixPQUs5QyxJQUE5Q0wsUUFBUUcsYUFBYUMsTUFBTUMsTUFBTUMsVUFBNEJOLFFBQVFHLGFBQWFDLE1BQU1DLE1BQU1DLFVBQVlOLFFBQVFHLGFBQWFDLE1BQU1DLE1BQU1FLGFBQ2hHLElBQTNDUCxRQUFRRyxhQUFhQyxNQUFNQyxNQUFNRyxPQUF5QlIsUUFBUUcsYUFBYUMsTUFBTUMsTUFBTUcsTUFBTUMsSUFBSSxZQUFjVCxRQUFRRyxhQUFhQyxNQUFNQyxNQUFNRyxNQUFNQyxJQUFJLFdBQ3hLVCxRQUFRRyxhQUFhQyxNQUFNQyxNQUFNSyxPQUFNLEdBR3pDLElBQUlDLE9BQXNELElBQXJDWCxRQUFRRyxhQUFhUyxZQUE4QlosUUFBUUcsYUFBYVMsWUFBY1osUUFBUUcsYUFBYVUsSUFBSUMsU0FBU0MsYUFDN0gsT0FBWkosUUFBaUQsSUFBdEJBLEVBQVFLLFdBQTZCTCxFQUFRSyxVQUFVQyxTQUFTLG9CQUM3RmpCLFFBQVFHLGFBQWFlLGNBQ3JCbEIsUUFBUUcsYUFBYUMsTUFBTUMsTUFBTWMsU0FBUSxHQUNyQ25CLFFBQVFHLGFBQWFDLE1BQU1DLE1BQU1lLGFBQWFDLEdBQUssSUFDckRyQixRQUFRRyxhQUFhQyxNQUFNQyxNQUFNaUIsT0FBTyxFQUFHLEdBQUt0QixRQUFRRyxhQUFhQyxNQUFNQyxNQUFNZSxhQUFhQyxNQU10R3pCLEdBQUcyQixnQkFBZ0JDLGtCQUNqQkMsT0FBVSxTQUFTQyxHQUNiL0IsU0FBU2dDLE9BQU9DLGFBQWFqQyxTQUNqQ0EsUUFBVWdDLE9BQU9FLFdBQVc1QixPQUFRLEtBRXRDNkIsS0FBUSxTQUFTbkIsR0FDZmYsR0FBR21DLE1BQU1DLGdCQUFnQkMsbUJBQW1CdEIsRUFBUyxXQUNuRGIsRUFBRWEsR0FBU3VCLElBQUksU0FBVXRDLEdBQUcyQixnQkFBZ0JDLGlCQUFpQkMsVUFHL0QzQixFQUFFYSxHQUFTd0IsR0FBRyxTQUFVdkMsR0FBRzJCLGdCQUFnQkMsaUJBQWlCQyIsImZpbGUiOiIvaG9tZS9idXJlcy9tb3NhaWNvL3NyYy9qcy9iaW5kaW5ncy9zY3JvbGxmaXguanMifQ==",
"\"use strict\";var $=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),console=require('console-browserify'),_scrollIntoView=function(o,e,l,r){var n=l.scrollTop(),t=n-r-(e?20:-20);if(void 0!==l[0].nodeType){var i={scrollTop:Math.round(t)+\"px\"},s=Math.round(Math.abs(t-n));l.stop().animate(i,s)}else l.scrollTop(t)};ko.bindingHandlers.scrollIntoView={update:function(o,e,l,r,n){if(ko.utils.unwrapObservable(e()))try{for(;8===o.nodeType;)o=o.nextSibling;if(8!==o.nodeType){var t,i=$(o).scrollParent(),s=!1;9==i[0].nodeType?(i=$(i[0].defaultView),t=0,s=!0):t=i.offset().top;var c=i.height(),a=i.scrollTop(),p=t+c,u=$(o),d=u.offset().top;s&&(d-=a);var f=u.height(),w=d+f;d>t&&d+f<p||(f<c?(d<t&&_scrollIntoView(o,!0,i,t-d),w>p&&_scrollIntoView(o,!1,i,p-w)):(d<t&&w<p&&_scrollIntoView(o,!1,i,p-w),d>t&&w>p&&_scrollIntoView(o,!0,i,t-d)))}}catch(o){console.log(\"TODO exception scrolling into view\",o)}}},ko.virtualElements.allowedBindings.scrollIntoView=!0;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjcm9sbGludG92aWV3LmpzIl0sIm5hbWVzIjpbIiQiLCJyZXF1aXJlIiwia28iLCJjb25zb2xlIiwiX3Njcm9sbEludG9WaWV3IiwiJGVsZW1lbnQiLCJhbGlnblRvcCIsInNjcm9sbFBhcmVudCIsIm1vdmVCeSIsImN1cnJlbnRTY3JvbGxUb3AiLCJzY3JvbGxUb3AiLCJuZXdTY3JvbGxUb3AiLCJub2RlVHlwZSIsImFjdGlvbiIsIk1hdGgiLCJyb3VuZCIsInRpbWUiLCJhYnMiLCJzdG9wIiwiYW5pbWF0ZSIsImJpbmRpbmdIYW5kbGVycyIsInNjcm9sbEludG9WaWV3IiwidXBkYXRlIiwiZWxlbWVudCIsInZhbHVlQWNjZXNzb3IiLCJhbGxCaW5kaW5nc0FjY2Vzc29yIiwidmlld01vZGVsIiwiYmluZGluZ0NvbnRleHQiLCJ1dGlscyIsInVud3JhcE9ic2VydmFibGUiLCJuZXh0U2libGluZyIsInBhcmVudFRvcCIsInJlbGF0aXZlT2Zmc2V0IiwiZGVmYXVsdFZpZXciLCJvZmZzZXQiLCJ0b3AiLCJwYXJlbnRIZWlnaHQiLCJoZWlnaHQiLCJwYXJlbnRTY3JvbGwiLCJwYXJlbnRCb3R0b20iLCJlbFRvcCIsImVsSGVpZ2h0IiwiZWxCb3R0b20iLCJlIiwibG9nIiwidmlydHVhbEVsZW1lbnRzIiwiYWxsb3dlZEJpbmRpbmdzIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUVBLElBQUlBLEVBQUlDLFFBQVEsVUFDWkMsR0FBS0QsUUFBUSxZQUNiRSxRQUFVRixRQUFRLFdBRWxCRyxnQkFBa0IsU0FBU0MsRUFBVUMsRUFBVUMsRUFBY0MsR0FDL0QsSUFBSUMsRUFBbUJGLEVBQWFHLFlBQ2hDQyxFQUFlRixFQUFtQkQsR0FBVUYsRUFBVyxJQUFNLElBR2pFLFFBRGtELElBQTdCQyxFQUFhLEdBQUdLLFNBQ3hCLENBQ1gsSUFBSUMsR0FDRkgsVUFBa0JJLEtBQUtDLE1BQU1KLEdBQWdCLE1BRTNDSyxFQUFPRixLQUFLQyxNQUFNRCxLQUFLRyxJQUFJTixFQUFlRixJQUM5Q0YsRUFBYVcsT0FBT0MsUUFBUU4sRUFBUUcsUUFFcENULEVBQWFHLFVBQVVDLElBTTNCVCxHQUFHa0IsZ0JBQWdCQyxnQkFDakJDLE9BQVEsU0FBU0MsRUFBU0MsRUFBZUMsRUFBcUJDLEVBQVdDLEdBRXZFLEdBRGV6QixHQUFHMEIsTUFBTUMsaUJBQWlCTCxLQUV6QyxJQUVFLEtBQTRCLElBQXJCRCxFQUFRWCxVQUViVyxFQUFVQSxFQUFRTyxZQUVwQixHQUF5QixJQUFyQlAsRUFBUVgsU0FBZ0IsQ0FDMUIsSUFFSW1CLEVBRkF4QixFQUFlUCxFQUFFdUIsR0FBU2hCLGVBRzFCeUIsR0FBaUIsRUFDVyxHQUE1QnpCLEVBQWEsR0FBR0ssVUFFbEJMLEVBQWVQLEVBQUVPLEVBQWEsR0FBRzBCLGFBQ2pDRixFQUFZLEVBQ1pDLEdBQWlCLEdBRWpCRCxFQUFZeEIsRUFBYTJCLFNBQVNDLElBR3BDLElBQUlDLEVBQWU3QixFQUFhOEIsU0FDNUJDLEVBQWUvQixFQUFhRyxZQUM1QjZCLEVBQWVSLEVBQVlLLEVBRzNCL0IsRUFBV0wsRUFBRXVCLEdBQ2JpQixFQUFRbkMsRUFBUzZCLFNBQVNDLElBRTFCSCxJQUFnQlEsR0FBZ0JGLEdBQ3BDLElBQUlHLEVBQVdwQyxFQUFTZ0MsU0FDcEJLLEVBQVdGLEVBQVFDLEVBQ25CRCxFQUFRVCxHQUFhUyxFQUFRQyxFQUFXRixJQUVqQ0UsRUFBV0wsR0FFaEJJLEVBQVFULEdBQVczQixnQkFBZ0JtQixHQUFTLEVBQU1oQixFQUFjd0IsRUFBWVMsR0FFNUVFLEVBQVdILEdBQWNuQyxnQkFBZ0JtQixHQUFTLEVBQU9oQixFQUFjZ0MsRUFBZUcsS0FLdEZGLEVBQVFULEdBQWFXLEVBQVdILEdBQWNuQyxnQkFBZ0JtQixHQUFTLEVBQU9oQixFQUFjZ0MsRUFBZUcsR0FFM0dGLEVBQVFULEdBQWFXLEVBQVdILEdBQWNuQyxnQkFBZ0JtQixHQUFTLEVBQU1oQixFQUFjd0IsRUFBWVMsTUFLL0csTUFBT0csR0FDUHhDLFFBQVF5QyxJQUFJLHFDQUFzQ0QsTUFJeER6QyxHQUFHMkMsZ0JBQWdCQyxnQkFBZ0MsZ0JBQUkiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvYmluZGluZ3Mvc2Nyb2xsaW50b3ZpZXcuanMifQ==",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),origTemplateSystem=require(\"./script-template.js\"),templates={};function createStringTemplateEngine(e){var t=e.makeTemplateSource;return e.makeTemplateSource=function(e){return void 0!==templates[e]?new ko.templateSources.stringTemplate(e,templates[e]):t(e)},e}function pushTemplate(e,t){templates[e]=t}function removeTemplate(e){void 0!==templates[e]?templates[e]=void 0:origTemplateSystem.removeTemplate(e)}function init(){ko.setTemplateEngine(createStringTemplateEngine(new ko.nativeTemplateEngine))}function getTemplateContent(e){return void 0!==templates[e]?templates[e]:origTemplateSystem.getTemplateContent(e)}ko.templateSources.stringTemplate=function(e,t){this.templateName=e,this.template=t,this._data={}},ko.utils.extend(ko.templateSources.stringTemplate.prototype,{data:function(e,t){if(1===arguments.length)return this._data[e];this._data[e]=t},text:function(e){if(0===arguments.length)return this.template;this.template=e}}),module.exports={init:init,addTemplate:pushTemplate,removeTemplate:removeTemplate,getTemplateContent:getTemplateContent};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZy10ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJrbyIsInJlcXVpcmUiLCJvcmlnVGVtcGxhdGVTeXN0ZW0iLCJ0ZW1wbGF0ZXMiLCJjcmVhdGVTdHJpbmdUZW1wbGF0ZUVuZ2luZSIsInRlbXBsYXRlRW5naW5lIiwib3JpZyIsIm1ha2VUZW1wbGF0ZVNvdXJjZSIsInRlbXBsYXRlTmFtZSIsInRlbXBsYXRlU291cmNlcyIsInN0cmluZ1RlbXBsYXRlIiwicHVzaFRlbXBsYXRlIiwidGVtcGxhdGVUZXh0IiwicmVtb3ZlVGVtcGxhdGUiLCJ1bmRlZmluZWQiLCJpbml0Iiwic2V0VGVtcGxhdGVFbmdpbmUiLCJuYXRpdmVUZW1wbGF0ZUVuZ2luZSIsImdldFRlbXBsYXRlQ29udGVudCIsImlkIiwidGVtcGxhdGUiLCJ0aGlzIiwiX2RhdGEiLCJ1dGlscyIsImV4dGVuZCIsInByb3RvdHlwZSIsImRhdGEiLCJrZXkiLCJ2YWx1ZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInRleHQiLCJtb2R1bGUiLCJleHBvcnRzIiwiYWRkVGVtcGxhdGUiXSwibWFwcGluZ3MiOiJBQUFBLGFBRUEsSUFBSUEsR0FBS0MsUUFBUSxZQUNiQyxtQkFBcUJELFFBQVEsd0JBRTdCRSxhQTZCSixTQUFTQywyQkFBMkJDLEdBQ2xDLElBQUlDLEVBQU9ELEVBQWVFLG1CQVExQixPQVBBRixFQUFlRSxtQkFBcUIsU0FBU0MsR0FDM0MsWUFBdUMsSUFBNUJMLFVBQVVLLEdBQ1osSUFBSVIsR0FBR1MsZ0JBQWdCQyxlQUFlRixFQUFjTCxVQUFVSyxJQUU5REYsRUFBS0UsSUFHVEgsRUFHVCxTQUFTTSxhQUFhSCxFQUFjSSxHQUNsQ1QsVUFBVUssR0FBZ0JJLEVBRzVCLFNBQVNDLGVBQWVMLFFBQ2lCLElBQTVCTCxVQUFVSyxHQUNuQkwsVUFBVUssUUFBZ0JNLEVBRTFCWixtQkFBbUJXLGVBQWVMLEdBSXRDLFNBQVNPLE9BQ1BmLEdBQUdnQixrQkFBa0JaLDJCQUEyQixJQUFJSixHQUFHaUIsdUJBR3pELFNBQVNDLG1CQUFtQkMsR0FDMUIsWUFBNkIsSUFBbEJoQixVQUFVZ0IsR0FDWmhCLFVBQVVnQixHQUVWakIsbUJBQW1CZ0IsbUJBQW1CQyxHQTFEakRuQixHQUFHUyxnQkFBZ0JDLGVBQWlCLFNBQVNGLEVBQWNZLEdBQ3pEQyxLQUFLYixhQUFlQSxFQUNwQmEsS0FBS0QsU0FBV0EsRUFDaEJDLEtBQUtDLFVBR1B0QixHQUFHdUIsTUFBTUMsT0FBT3hCLEdBQUdTLGdCQUFnQkMsZUFBZWUsV0FDaERDLEtBQU0sU0FBU0MsRUFBS0MsR0FFbEIsR0FBeUIsSUFBckJDLFVBQVVDLE9BQ1osT0FBT1QsS0FBS0MsTUFBTUssR0FHcEJOLEtBQUtDLE1BQU1LLEdBQU9DLEdBRXBCRyxLQUFNLFNBQVNILEdBRWIsR0FBeUIsSUFBckJDLFVBQVVDLE9BQ1osT0FBT1QsS0FBS0QsU0FFZEMsS0FBS0QsU0FBV1EsS0EwQ3BCSSxPQUFPQyxTQUNMbEIsS0FBTUEsS0FDTm1CLFlBQWF2QixhQUNiRSxlQUFnQkEsZUFDaEJLLG1CQUFvQkEiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvYmluZGluZ3Mvc3RyaW5nLXRlbXBsYXRlLmpzIn0=",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),$=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),kojqui=(typeof window !== \"undefined\" ? window['kojqui'] : typeof global !== \"undefined\" ? global['kojqui'] : null),console=require('console-browserify'),extendValueAccessor=function(o,i){return function(){return ko.utils.extend(i,o()),i}},options={show:{delay:500},track:!0,items:'[title][title!=\"\"][title!=\" \"]'};ko.bindingHandlers.tooltips={init:function(o,i,t,e,n){if(void 0!==$.fn.tooltip&&void 0!==ko.bindingHandlers.tooltip)return ko.bindingHandlers.tooltip.init(o,extendValueAccessor(i,options),t,e,n)},update:function(o,i,t,e,n){if(void 0!==$.fn.tooltip&&void 0!==ko.bindingHandlers.tooltip)return ko.bindingHandlers.tooltip.update(o,extendValueAccessor(i,options),t,e,n)}};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvb2x0aXBzLmpzIl0sIm5hbWVzIjpbImtvIiwicmVxdWlyZSIsIiQiLCJrb2pxdWkiLCJjb25zb2xlIiwiZXh0ZW5kVmFsdWVBY2Nlc3NvciIsInZhbHVlQWNjZXNzb3IiLCJvYmoiLCJ1dGlscyIsImV4dGVuZCIsIm9wdGlvbnMiLCJzaG93IiwiZGVsYXkiLCJ0cmFjayIsIml0ZW1zIiwiYmluZGluZ0hhbmRsZXJzIiwidG9vbHRpcHMiLCJpbml0IiwiZWxlbWVudCIsImFsbEJpbmRpbmdzQWNjZXNzb3IiLCJkYXRhIiwiY29udGV4dCIsImZuIiwidG9vbHRpcCIsInVwZGF0ZSJdLCJtYXBwaW5ncyI6IkFBQUEsYUFFQSxJQUFJQSxHQUFLQyxRQUFRLFlBQ2JDLEVBQUlELFFBQVEsVUFDWkUsT0FBU0YsUUFBUSxxQkFDakJHLFFBQVVILFFBQVEsV0FFbEJJLG9CQUFzQixTQUFTQyxFQUFlQyxHQUNoRCxPQUFPLFdBRUwsT0FEQVAsR0FBR1EsTUFBTUMsT0FBT0YsRUFBS0QsS0FDZEMsSUFJUEcsU0FDRkMsTUFDRUMsTUFBTyxLQUVUQyxPQUFPLEVBQ1BDLE1BQU8sa0NBR1RkLEdBQUdlLGdCQUFnQkMsVUFDakJDLEtBQU0sU0FBU0MsRUFBU1osRUFBZWEsRUFBcUJDLEVBQU1DLEdBQ2hFLFFBQTRCLElBQWpCbkIsRUFBRW9CLEdBQUdDLGNBQWlFLElBQS9CdkIsR0FBR2UsZ0JBQWdCUSxRQUduRSxPQUFPdkIsR0FBR2UsZ0JBQWdCUSxRQUFRTixLQUFLQyxFQUFTYixvQkFBb0JDLEVBQWVJLFNBQVVTLEVBQXFCQyxFQUFNQyxJQUc1SEcsT0FBUSxTQUFTTixFQUFTWixFQUFlYSxFQUFxQkMsRUFBTUMsR0FDbEUsUUFBNEIsSUFBakJuQixFQUFFb0IsR0FBR0MsY0FBaUUsSUFBL0J2QixHQUFHZSxnQkFBZ0JRLFFBQ25FLE9BQU92QixHQUFHZSxnQkFBZ0JRLFFBQVFDLE9BQU9OLEVBQVNiLG9CQUFvQkMsRUFBZUksU0FBVVMsRUFBcUJDLEVBQU1DIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL2JpbmRpbmdzL3Rvb2x0aXBzLmpzIn0=",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),console=require('console-browserify');ko.bindingHandlers.validatedValue={init:function(e,i,n){var t=i;if(void 0!==e.pattern){var a=new RegExp(\"^(?:\"+e.pattern+\")$\"),o=ko.computed({read:function(){var n=ko.utils.unwrapObservable(i());return null===n||\"\"===n||a.test(n)?e.classList.remove(\"invalid\"):e.classList.add(\"invalid\"),n},write:ko.isWriteableObservable(i())&&function(n){ko.selectExtensions.writeValue(e,n);var t=ko.selectExtensions.readValue(e);i()(t)},disposeWhenNodeIsRemoved:e});t=function(){return o}}ko.bindingHandlers.value.init(e,t,n)}},ko.expressionRewriting._twoWayBindings.validatedValue=!0;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRlZC12YWx1ZS5qcyJdLCJuYW1lcyI6WyJrbyIsInJlcXVpcmUiLCJjb25zb2xlIiwiYmluZGluZ0hhbmRsZXJzIiwiaW5pdCIsImVsZW1lbnQiLCJ2YWx1ZUFjY2Vzc29yIiwiYWxsQmluZGluZ3MiLCJuZXdWYWx1ZUFjY2Vzc29yIiwicGF0dGVybiIsInJlIiwiUmVnRXhwIiwiY29tcHV0ZWQiLCJyZWFkIiwicmVzIiwidXRpbHMiLCJ1bndyYXBPYnNlcnZhYmxlIiwidGVzdCIsImNsYXNzTGlzdCIsInJlbW92ZSIsImFkZCIsIndyaXRlIiwiaXNXcml0ZWFibGVPYnNlcnZhYmxlIiwidmFsdWUiLCJzZWxlY3RFeHRlbnNpb25zIiwid3JpdGVWYWx1ZSIsInVwZFZhbHVlIiwicmVhZFZhbHVlIiwiZGlzcG9zZVdoZW5Ob2RlSXNSZW1vdmVkIiwiZXhwcmVzc2lvblJld3JpdGluZyIsIl90d29XYXlCaW5kaW5ncyJdLCJtYXBwaW5ncyI6IkFBQUEsYUFFQSxJQUFJQSxHQUFLQyxRQUFRLFlBQ2JDLFFBQVVELFFBQVEsV0FHdEJELEdBQUdHLGdCQUFnQyxnQkFDbENDLEtBQU0sU0FBU0MsRUFBU0MsRUFBZUMsR0FDdEMsSUFBSUMsRUFBbUJGLEVBQ3ZCLFFBQStCLElBQXBCRCxFQUFRSSxRQUF5QixDQUMzQyxJQUFJQyxFQUFLLElBQUlDLE9BQU8sT0FBU04sRUFBUUksUUFBVSxNQUMzQ0csRUFBV1osR0FBR1ksVUFDakJDLEtBQU0sV0FDTCxJQUFJQyxFQUFNZCxHQUFHZSxNQUFNQyxpQkFBaUJWLEtBU3BDLE9BUG9CLE9BQVJRLEdBQXdCLEtBQVJBLEdBQWNKLEVBQUdPLEtBQUtILEdBR2pEVCxFQUFRYSxVQUFVQyxPQUFPLFdBRXpCZCxFQUFRYSxVQUFVRSxJQUFJLFdBRWhCTixHQUVSTyxNQUFPckIsR0FBR3NCLHNCQUFzQmhCLE1BQW9CLFNBQVNpQixHQUU1RHZCLEdBQUd3QixpQkFBaUJDLFdBQVdwQixFQUFTa0IsR0FDeEMsSUFBSUcsRUFBVzFCLEdBQUd3QixpQkFBaUJHLFVBQVV0QixHQUM3Q0MsR0FBQUEsQ0FBZ0JvQixJQUVqQkUseUJBQTBCdkIsSUFFM0JHLEVBQW1CLFdBQ2xCLE9BQU9JLEdBR1RaLEdBQUdHLGdCQUF1QixNQUFFQyxLQUFLQyxFQUFTRyxFQUFrQkQsS0FHOURQLEdBQUc2QixvQkFBb0JDLGdCQUFnQyxnQkFBSSIsImZpbGUiOiIvaG9tZS9idXJlcy9tb3NhaWNvL3NyYy9qcy9iaW5kaW5ncy92YWxpZGF0ZWQtdmFsdWUuanMifQ==",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),console=require('console-browserify');ko.bindingHandlers.uniqueId={currentIndex:0,init:function(e,t){var n=ko.utils.unwrapObservable(t())||{};if(\"\"===n.id()){var i,l,r;r=\"ko_\"+(void 0!==n.type?ko.utils.unwrapObservable(n.type):\"block\");do{i=r+\"_\"+ ++ko.bindingHandlers.uniqueId.currentIndex,l=global.document.getElementById(i)}while(l);n.id(i)}}},ko.virtualElements.allowedBindings.uniqueId=!0,ko.bindingHandlers.virtualAttr={update:function(e,t){8!==e.nodeType&&ko.bindingHandlers.attr.update(e,t)}},ko.virtualElements.allowedBindings.virtualAttr=!0,ko.bindingHandlers.virtualAttrStyle={update:function(e,t,n,i,l){if(8!==e.nodeType){var r=[\"style\"];(void 0===l.templateMode||\"wysiwyg\"!=l.templateMode)&&r.push(\"replacedstyle\");for(var o=ko.utils.unwrapObservable(t()),a=0;a<r.length;a++){var d=r[a];!1===o||null===o||void 0===o?e.removeAttribute(d):e.setAttribute(d,o.toString())}}}},ko.virtualElements.allowedBindings.virtualAttrStyle=!0,ko.bindingHandlers.virtualStyle={update:function(e,t){8!==e.nodeType&&ko.bindingHandlers.style.update(e,t)}},ko.virtualElements.allowedBindings.virtualStyle=!0,ko.bindingHandlers.virtualHtml={init:ko.bindingHandlers.html.init,update:function(e,t){if(8===e.nodeType){var n=ko.utils.unwrapObservable(t());if(ko.virtualElements.emptyNode(e),null!==n&&void 0!==n){\"string\"!=typeof n&&(n=n.toString());var i=ko.utils.parseHtmlFragment(n);if(i)for(var l=e.nextSibling,r=0,o=i.length;r<o;r++)l.parentNode.insertBefore(i[r],l)}}else ko.bindingHandlers.html.update(e,t);return{controlsDescendantBindings:!0}}},ko.virtualElements.allowedBindings.virtualHtml=!0;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpcnR1YWxzLmpzIl0sIm5hbWVzIjpbImtvIiwicmVxdWlyZSIsImNvbnNvbGUiLCJiaW5kaW5nSGFuZGxlcnMiLCJjdXJyZW50SW5kZXgiLCJpbml0IiwiZWxlbWVudCIsInZhbHVlQWNjZXNzb3IiLCJkYXRhIiwidXRpbHMiLCJ1bndyYXBPYnNlcnZhYmxlIiwiaWQiLCJlbCIsInByZWZpeCIsInR5cGUiLCJnbG9iYWwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidmlydHVhbEVsZW1lbnRzIiwiYWxsb3dlZEJpbmRpbmdzIiwidXBkYXRlIiwibm9kZVR5cGUiLCJhbGxCaW5kaW5nc0FjY2Vzc29yIiwidmlld01vZGVsIiwiYmluZGluZ0NvbnRleHQiLCJhdHRycyIsInRlbXBsYXRlTW9kZSIsInB1c2giLCJhdHRyVmFsdWUiLCJpIiwibGVuZ3RoIiwiYXR0ck5hbWUiLCJ1bmRlZmluZWQiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJ0b1N0cmluZyIsImh0bWwiLCJlbXB0eU5vZGUiLCJwYXJzZWROb2RlcyIsInBhcnNlSHRtbEZyYWdtZW50IiwiZW5kQ29tbWVudE5vZGUiLCJuZXh0U2libGluZyIsImoiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiY29udHJvbHNEZXNjZW5kYW50QmluZGluZ3MiXSwibWFwcGluZ3MiOiJBQUFBLGFBR0EsSUFBSUEsR0FBS0MsUUFBUSxZQUNiQyxRQUFVRCxRQUFRLFdBRXRCRCxHQUFHRyxnQkFBMEIsVUFDM0JDLGFBQWMsRUFDZEMsS0FBUSxTQUFTQyxFQUFTQyxHQUN4QixJQUFJQyxFQUFPUixHQUFHUyxNQUFNQyxpQkFBaUJILFNBQ3JDLEdBQWtCLEtBQWRDLEVBQUtHLEtBQWEsQ0FDcEIsSUFBSUEsRUFBSUMsRUFBSUMsRUFFWkEsRUFBUyxZQUE4QixJQUFkTCxFQUFLTSxLQUF1QmQsR0FBR1MsTUFBTUMsaUJBQWlCRixFQUFLTSxNQUFRLFNBRTVGLEdBQ0VILEVBQUtFLEVBQVMsT0FBU2IsR0FBR0csZ0JBQTBCLFNBQUVDLGFBQ3REUSxFQUFLRyxPQUFPQyxTQUFTQyxlQUFlTixTQVE3QkMsR0FDVEosRUFBS0csR0FBR0EsTUFJZFgsR0FBR2tCLGdCQUFnQkMsZ0JBQTBCLFVBQUksRUFFakRuQixHQUFHRyxnQkFBNkIsYUFDOUJpQixPQUFRLFNBQVNkLEVBQVNDLEdBQ0MsSUFBckJELEVBQVFlLFVBQ1ZyQixHQUFHRyxnQkFBc0IsS0FBRWlCLE9BQU9kLEVBQVNDLEtBSWpEUCxHQUFHa0IsZ0JBQWdCQyxnQkFBNkIsYUFBSSxFQUVwRG5CLEdBQUdHLGdCQUFrQyxrQkFDbkNpQixPQUFRLFNBQVNkLEVBQVNDLEVBQWVlLEVBQXFCQyxFQUFXQyxHQUN2RSxHQUF5QixJQUFyQmxCLEVBQVFlLFNBQWdCLENBRTFCLElBQ0lJLEdBQVMsZUFEaUQsSUFBL0JELEVBQWVFLGNBQThELFdBQS9CRixFQUFlRSxlQUV0RUQsRUFBTUUsS0FBSyxpQkFFakMsSUFEQSxJQUFJQyxFQUFZNUIsR0FBR1MsTUFBTUMsaUJBQWlCSCxLQUNqQ3NCLEVBQUksRUFBR0EsRUFBSUosRUFBTUssT0FBUUQsSUFBSyxDQUNyQyxJQUFJRSxFQUFXTixFQUFNSSxJQUNTLElBQWRELEdBQXVDLE9BQWRBLFFBQXNDSSxJQUFkSixFQUUvRHRCLEVBQVEyQixnQkFBZ0JGLEdBRXhCekIsRUFBUTRCLGFBQWFILEVBQVVILEVBQVVPLGdCQUtuRG5DLEdBQUdrQixnQkFBZ0JDLGdCQUFrQyxrQkFBSSxFQUV6RG5CLEdBQUdHLGdCQUE4QixjQUMvQmlCLE9BQVEsU0FBU2QsRUFBU0MsR0FDQyxJQUFyQkQsRUFBUWUsVUFDVnJCLEdBQUdHLGdCQUF1QixNQUFFaUIsT0FBT2QsRUFBU0MsS0FJbERQLEdBQUdrQixnQkFBZ0JDLGdCQUE4QixjQUFJLEVBR3JEbkIsR0FBR0csZ0JBQTZCLGFBQzlCRSxLQUFNTCxHQUFHRyxnQkFBc0IsS0FBRUUsS0FDakNlLE9BQVEsU0FBU2QsRUFBU0MsR0FDeEIsR0FBeUIsSUFBckJELEVBQVFlLFNBQWdCLENBQzFCLElBQUllLEVBQU9wQyxHQUFHUyxNQUFNQyxpQkFBaUJILEtBR3JDLEdBREFQLEdBQUdrQixnQkFBZ0JtQixVQUFVL0IsR0FDZixPQUFUOEIsUUFBNEJKLElBQVRJLEVBQXFCLENBQ3ZCLGlCQUFUQSxJQUNUQSxFQUFPQSxFQUFLRCxZQUdkLElBQUlHLEVBQWN0QyxHQUFHUyxNQUFNOEIsa0JBQWtCSCxHQUM3QyxHQUFJRSxFQUVGLElBREEsSUFBSUUsRUFBaUJsQyxFQUFRbUMsWUFDcEJaLEVBQUksRUFBR2EsRUFBSUosRUFBWVIsT0FBUUQsRUFBSWEsRUFBR2IsSUFDN0NXLEVBQWVHLFdBQVdDLGFBQWFOLEVBQVlULEdBQUlXLFNBSTdEeEMsR0FBR0csZ0JBQXNCLEtBQUVpQixPQUFPZCxFQUFTQyxHQUk3QyxPQUNFc0MsNEJBQTRCLEtBSWxDN0MsR0FBR2tCLGdCQUFnQkMsZ0JBQTZCLGFBQUkiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvYmluZGluZ3MvdmlydHVhbHMuanMifQ==",
"\"use strict\";var tinymce=(typeof window !== \"undefined\" ? window['tinymce'] : typeof global !== \"undefined\" ? global['tinymce'] : null),$=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),console=require('console-browserify');require(\"./eventable.js\"),ko.bindingHandlers.wysiwygOrHtml={init:function(e,t,i,n,o){return void 0===o.templateMode||\"wysiwyg\"!=o.templateMode?ko.bindingHandlers.virtualHtml.init():ko.bindingHandlers.wysiwyg.init(e,t,i,n,o)},update:function(e,t,i,n,o){if(void 0===o.templateMode||\"wysiwyg\"!=o.templateMode)return ko.bindingHandlers.virtualHtml.update(e,t,i,n,o)}},ko.virtualElements.allowedBindings.wysiwygOrHtml=!0,ko.bindingHandlers.wysiwygHref={init:function(e,t,i,n,o){if(8!==e.nodeType){t();if(void 0===o.templateMode||\"wysiwyg\"!=o.templateMode)e.setAttribute(\"target\",\"_new\");else void 0!==i().wysiwygOrHtml?e.setAttribute(\"href\",\"javascript:void(0)\"):(e.removeAttribute(\"href\"),e.setAttribute(\"disabledhref\",\"#\"))}},update:function(e,t,i,n,o){if(8!==e.nodeType){var l=void 0===o.templateMode||\"wysiwyg\"!=o.templateMode,r=ko.utils.unwrapObservable(t());l&&(!1===r||null===r||void 0===r?e.removeAttribute(\"href\"):e.setAttribute(\"href\",r.toString()))}}},ko.virtualElements.allowedBindings.wysiwygHref=!0,ko.bindingHandlers.wysiwygSrc={convertedUrl:function(e,t,i,n){return e+(-1==e.indexOf(\"?\")?\"?\":\"&\")+\"method=\"+t+\"&width=\"+i+(null!==n?\"&height=\"+n:\"\")},placeholderUrl:function(e,t,i){},update:function(e,t,i,n,o){var l=ko.utils.unwrapObservable(t()),r=ko.utils.unwrapObservable(l.src),s=ko.utils.unwrapObservable(l.placeholder),a=ko.utils.unwrapObservable(l.width),d=ko.utils.unwrapObservable(l.height);if(!1===r||null===r||void 0===r||\"\"===r)\"object\"==typeof s&&null!==s?e.setAttribute(\"src\",ko.bindingHandlers.wysiwygSrc.placeholderUrl(s.width,s.height,s.text)):e.removeAttribute(\"src\");else{var u=ko.utils.unwrapObservable(l.method);u||(u=a>0&&d>0?\"cover\":\"resize\");var g=ko.bindingHandlers.wysiwygSrc.convertedUrl(r.toString(),u,a,d);e.setAttribute(\"src\",g)}void 0!==a&&null!==a?e.setAttribute(\"width\",a):e.removeAttribute(\"width\"),void 0!==d&&null!==d?e.setAttribute(\"height\",d):e.removeAttribute(\"height\")}},ko.bindingHandlers.wysiwygId={init:function(e,t,i,n,o){void 0===o.templateMode||\"wysiwyg\"!=o.templateMode||e.setAttribute(\"id\",ko.utils.unwrapObservable(t()))},update:function(e,t,i,n,o){void 0===o.templateMode||\"wysiwyg\"!=o.templateMode||e.setAttribute(\"id\",ko.utils.unwrapObservable(t()))}},ko.virtualElements.allowedBindings.wysiwygId=!0,ko.bindingHandlers.wysiwygClick={init:function(e,t,i,n,o){void 0===o.templateMode||\"wysiwyg\"!=o.templateMode||ko.bindingHandlers.click.init(e,t,i,n,o)}},ko.virtualElements.allowedBindings.wysiwygClick=!0,ko.bindingHandlers.wysiwygCss={update:function(e,t,i,n,o){void 0===o.templateMode||\"wysiwyg\"!=o.templateMode||ko.bindingHandlers.css.update(e,t,i,n,o)}},ko.virtualElements.allowedBindings.wysiwygCss=!0,ko.bindingHandlers.wysiwygImg={makeTemplateValueAccessor:function(e,t){return function(){var i=void 0!==t.templateMode&&\"wysiwyg\"==t.templateMode,n=e(),o=ko.utils.peekObservable(n);return ko.utils.unwrapObservable(n),{name:i?o._editTemplate:o._template,templateEngine:ko.nativeTemplateEngine.instance}}},init:function(e,t,i,n,o){return ko.bindingHandlers.template.init(e,ko.bindingHandlers.wysiwygImg.makeTemplateValueAccessor(t,o))},update:function(e,t,i,n,o){return o=o.extend(t()),ko.bindingHandlers.template.update(e,ko.bindingHandlers.wysiwygImg.makeTemplateValueAccessor(t,o),i,n,o)}},ko.virtualElements.allowedBindings.wysiwygImg=!0,ko.bindingHandlers.wysiwyg={currentIndex:0,standardOptions:{},fullOptions:{toolbar1:\"bold italic forecolor backcolor hr styleselect removeformat | link unlink | pastetext code\",plugins:[\"link hr paste lists textcolor code\"]},init:function(e,t,i,n,o){ko.bindingHandlers.focusable.init(e),ko.utils.domNodeDisposal.addDisposeCallback(e,function(){tinymce.remove(\"#\"+e.getAttribute(\"id\"))});var l=t();if(!ko.isObservable(l))throw\"Wysiwyg binding called with non observable\";if(8===e.nodeType)throw\"Wysiwyg binding called on virtual node, ignoring....\"+e.innerHTML;var r=e.getAttribute(\"id\");r||(r=\"wysiwyg_\"+ ++ko.bindingHandlers.wysiwyg.currentIndex,e.setAttribute(\"id\",r));var s,a=\"DIV\"==e.tagName||\"TD\"==e.tagName,d=!1,u=!1,g={selector:\"#\"+r,inline:!0,hidden_input:!1,plugins:[\"paste\"],toolbar1:\"bold italic\",toolbar2:\"\",preview_styles:!1,paste_as_text:!0,language:\"en\",schema:\"html5\",extended_valid_elements:\"strong/b,em/i,*[*]\",menubar:!1,skin:\"gray-flat\",setup:function(e){e.on(\"change redo undo\",function(){d||(u=!0,l(e.getContent({format:\"raw\"})),u=!1)}),e.on(\"focus\",function(){e.nodeChanged(),e.getElement().click()}),e.on(\"BeforeSetContent\",function(e){e.initial&&(e.format=\"raw\")}),s=e}};return ko.utils.extend(g,ko.bindingHandlers.wysiwyg.standardOptions),a&&ko.utils.extend(g,ko.bindingHandlers.wysiwyg.fullOptions),global.setTimeout(function(){tinymce.init(g)}),ko.computed(function(){var i=ko.utils.unwrapObservable(t());if(!u){try{d=!0,void 0!==s?s.setContent(i,{format:\"raw\"}):ko.utils.setHtml(e,i)}catch(e){console.log(\"TODO exception setting content to editable element\",typeof s,e)}d=!1}},null,{disposeWhenNodeIsRemoved:e}),{controlsDescendantBindings:!0}}};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInd5c2l3eWdzLmpzIl0sIm5hbWVzIjpbInRpbnltY2UiLCJyZXF1aXJlIiwiJCIsImtvIiwiY29uc29sZSIsImJpbmRpbmdIYW5kbGVycyIsInd5c2l3eWdPckh0bWwiLCJpbml0IiwiZWxlbWVudCIsInZhbHVlQWNjZXNzb3IiLCJhbGxCaW5kaW5nc0FjY2Vzc29yIiwidmlld01vZGVsIiwiYmluZGluZ0NvbnRleHQiLCJ0ZW1wbGF0ZU1vZGUiLCJ3eXNpd3lnIiwidXBkYXRlIiwidmlydHVhbEVsZW1lbnRzIiwiYWxsb3dlZEJpbmRpbmdzIiwid3lzaXd5Z0hyZWYiLCJub2RlVHlwZSIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsImlzTm90V3lzaXd5Z01vZGUiLCJhdHRyVmFsdWUiLCJ1dGlscyIsInVud3JhcE9ic2VydmFibGUiLCJ1bmRlZmluZWQiLCJ0b1N0cmluZyIsInd5c2l3eWdTcmMiLCJjb252ZXJ0ZWRVcmwiLCJzcmMiLCJtZXRob2QiLCJ3aWR0aCIsImhlaWdodCIsImluZGV4T2YiLCJwbGFjZWhvbGRlclVybCIsInBsd2lkdGgiLCJwbGhlaWdodCIsInBsdGV4dCIsInZhbHVlIiwicGxhY2Vob2xkZXJWYWx1ZSIsInBsYWNlaG9sZGVyIiwidGV4dCIsInd5c2l3eWdJZCIsInd5c2l3eWdDbGljayIsImNsaWNrIiwid3lzaXd5Z0NzcyIsImNzcyIsInd5c2l3eWdJbWciLCJtYWtlVGVtcGxhdGVWYWx1ZUFjY2Vzc29yIiwiaXNXeXNpd3lnTW9kZSIsIm1vZGVsVmFsdWUiLCJ1bndyYXBwZWRWYWx1ZSIsInBlZWtPYnNlcnZhYmxlIiwibmFtZSIsInRlbXBsYXRlRW5naW5lIiwibmF0aXZlVGVtcGxhdGVFbmdpbmUiLCJpbnN0YW5jZSIsImFsbEJpbmRpbmdzIiwiY3VycmVudEluZGV4Iiwic3RhbmRhcmRPcHRpb25zIiwiZnVsbE9wdGlvbnMiLCJ0b29sYmFyMSIsInBsdWdpbnMiLCJmb2N1c2FibGUiLCJkb21Ob2RlRGlzcG9zYWwiLCJhZGREaXNwb3NlQ2FsbGJhY2siLCJyZW1vdmUiLCJnZXRBdHRyaWJ1dGUiLCJpc09ic2VydmFibGUiLCJpbm5lckhUTUwiLCJzZWxlY3RvcklkIiwidGhpc0VkaXRvciIsImZ1bGxFZGl0b3IiLCJ0YWdOYW1lIiwiaXNTdWJzY3JpYmVyQ2hhbmdlIiwiaXNFZGl0b3JDaGFuZ2UiLCJvcHRpb25zIiwic2VsZWN0b3IiLCJpbmxpbmUiLCJoaWRkZW5faW5wdXQiLCJ0b29sYmFyMiIsInByZXZpZXdfc3R5bGVzIiwicGFzdGVfYXNfdGV4dCIsImxhbmd1YWdlIiwic2NoZW1hIiwiZXh0ZW5kZWRfdmFsaWRfZWxlbWVudHMiLCJtZW51YmFyIiwic2tpbiIsInNldHVwIiwiZWRpdG9yIiwib24iLCJnZXRDb250ZW50IiwiZm9ybWF0Iiwibm9kZUNoYW5nZWQiLCJnZXRFbGVtZW50IiwiYXJncyIsImluaXRpYWwiLCJleHRlbmQiLCJnbG9iYWwiLCJzZXRUaW1lb3V0IiwiY29tcHV0ZWQiLCJjb250ZW50Iiwic2V0Q29udGVudCIsInNldEh0bWwiLCJlIiwibG9nIiwiZGlzcG9zZVdoZW5Ob2RlSXNSZW1vdmVkIiwiY29udHJvbHNEZXNjZW5kYW50QmluZGluZ3MiXSwibWFwcGluZ3MiOiJBQUFBLGFBR0EsSUFBSUEsUUFBVUMsUUFBUSxXQUNsQkMsRUFBSUQsUUFBUSxVQUNaRSxHQUFLRixRQUFRLFlBQ2JHLFFBQVVILFFBQVEsV0FDdEJBLFFBQVEsa0JBRVJFLEdBQUdFLGdCQUFnQkMsZUFDakJDLEtBQU0sU0FBU0MsRUFBU0MsRUFBZUMsRUFBcUJDLEVBQVdDLEdBR3JFLFlBRjhELElBQS9CQSxFQUFlQyxjQUE4RCxXQUEvQkQsRUFBZUMsYUFHbkZWLEdBQUdFLGdCQUE2QixZQUFFRSxPQUVsQ0osR0FBR0UsZ0JBQWdCUyxRQUFRUCxLQUFLQyxFQUFTQyxFQUFlQyxFQUFxQkMsRUFBV0MsSUFFbkdHLE9BQVEsU0FBU1AsRUFBU0MsRUFBZUMsRUFBcUJDLEVBQVdDLEdBRXZFLFFBRDhELElB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Q1RDLEtBQU0sWUFDTkMsTUFBTyxTQUFTQyxHQUdkQSxFQUFPQyxHQUFHLG1CQUFvQixXQUN2QmhCLElBQ0hDLEdBQWlCLEVBSWpCckMsRUFBTW1ELEVBQU9FLFlBQ1hDLE9BQVEsU0FFVmpCLEdBQWlCLEtBS3JCYyxFQUFPQyxHQUFHLFFBQVMsV0FFakJELEVBQU9JLGNBQ1BKLEVBQU9LLGFBQWFsRCxVQUl0QjZDLEVBQU9DLEdBQUcsbUJBQW9CLFNBQVNLLEdBQ2pDQSxFQUFLQyxVQUFTRCxFQUFLSCxPQUFTLFNBWWxDckIsRUFBYWtCLElBdUNqQixPQWxDQXZGLEdBQUdxQixNQUFNMEUsT0FBT3JCLEVBQVMxRSxHQUFHRSxnQkFBZ0JTLFFBQVE4QyxpQkFDaERhLEdBQVl0RSxHQUFHcUIsTUFBTTBFLE9BQU9yQixFQUFTMUUsR0FBR0UsZ0JBQWdCUyxRQUFRK0MsYUFLcEVzQyxPQUFPQyxXQUFXLFdBQ2hCcEcsUUFBUU8sS0FBS3NFLEtBR2YxRSxHQUFHa0csU0FBUyxXQUNWLElBQUlDLEVBQVVuRyxHQUFHcUIsTUFBTUMsaUJBQWlCaEIsS0FDeEMsSUFBS21FLEVBQWdCLENBQ25CLElBQ0VELEdBQXFCLE9BR0ssSUFBZkgsRUFDVEEsRUFBVytCLFdBQVdELEdBQ3BCVCxPQUFRLFFBR1YxRixHQUFHcUIsTUFBTWdGLFFBQVFoRyxFQUFTOEYsR0FFNUIsTUFBT0csR0FDUHJHLFFBQVFzRyxJQUFJLDREQUE2RGxDLEVBQVlpQyxHQUV2RjlCLEdBQXFCLElBRXRCLE1BQ0RnQyx5QkFBMEJuRyxLQUsxQm9HLDRCQUE0QiIsImZpbGUiOiIvaG9tZS9idXJlcy9tb3NhaWNvL3NyYy9qcy9iaW5kaW5ncy93eXNpd3lncy5qcyJ9",
"\"use strict\";var console=require('console-browserify'),checkModel=function(e,o,t,n,l){var i,f,r,a=0;if(void 0===l&&(l=!1),void 0!==o&&\"function\"==typeof o.splice)for(i={},f=0;f<o.length;f++)i[o[f].type]=o[f];else i=o;for(var p in e)if(e.hasOwnProperty(p))if(r=void 0!==n?n+\".\"+p:p,t.hasOwnProperty(p))if(typeof t[p]!=typeof e[p])null!==t[p]&&null!==e[p]&&(\"string\"==typeof t[p]?String(e[p])!=e[p]&&(console.log(\"TODO Different type 1 \",r,typeof t[p],typeof e[p],t[p],e[p]),a=Math.max(a,2)):\"number\"==typeof t[p]?Number(e[p])!=e[p]&&(console.log(\"TODO Different type 2 \",r,typeof t[p],typeof e[p],t[p],e[p]),a=Math.max(a,2)):(console.log(\"TODO Different type 3 \",r,typeof t[p],typeof e[p],t[p],e[p]),a=Math.max(a,2)));else if(\"object\"==typeof e[p])if(null!==e[p])if(void 0!==e[p].splice){if(e[p].length>0)if(t[p].length>0){var c=0;for(f=0;f<t[p].length;f++)if(\"string\"==typeof t[p][f].type){for(;c<e[p].length&&e[p][c].type!==t[p][f].type;)console.log(\"ignoring \",r,e[p][c].type,\" block type in reference not found in model\"),c++;if(c>=e[p].length){console.log(\"WARN cannot find \",r,t[p][f].type,\" block in reference\"),a=Math.max(a,2);break}a=Math.max(a,checkModel(e[p][c],void 0,t[p][f],r+\"[\"+f+\".\"+t[p][f].type+\"]\"))}}else for(f=0;f<e[p].length;f++)\"string\"!=typeof e[p][f].type?(console.log(\"TODO found an object with no type\",r,e[p][f]),a=Math.max(a,2)):i.hasOwnProperty(e[p][f].type)?a=Math.max(a,checkModel(i[e[p][f].type],i,e[p][f],r+\"[\"+f+\".\"+e[p][f].type+\"]\")):(console.warn(\"TODO the model uses a block type not defined by the template. REMOVING IT!!\",r,e[p][f]),e[p].splice(f,1),f--,a=Math.max(a,2))}else null===t[p]?l?(console.log(\"WARN Null object in model \",r,\"instead of\",e[p],\"deleting it\"),a=Math.max(a,2),delete e[p]):(console.log(\"INFO Null object in model \",r,\"instead of\",e[p],\"cloning it from the reference\"),a=Math.max(a,1),t[p]=e[p]):a=Math.max(a,checkModel(e[p],i,t[p],r,l));else null!==t[p]&&(console.log(\"TODO Null in reference but not null in model\",r,t[p]),a=Math.max(a,2));else\"string\"!=typeof e[p]&&\"boolean\"!=typeof e[p]&&\"number\"!=typeof e[p]&&(console.log(\"TODO unsupported type\",r,typeof e[p]),a=Math.max(a,2));else l?(console.warn(\"WARN Property \",r,\"found in model is not defined by template: removing it!\"),a=Math.max(a,2),delete e[p]):(console.log(\"INFO Property \",r,\"missing in model, cloning from reference!\"),a=Math.max(a,1),t[p]=e[p]);return l||(a=Math.max(a,checkModel(t,o,e,void 0!==n?n+\"!R\":\"!R\",!0))),a};module.exports=checkModel;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNoZWNrbW9kZWwuanMiXSwibmFtZXMiOlsiY29uc29sZSIsInJlcXVpcmUiLCJjaGVja01vZGVsIiwicmVmZXJlbmNlIiwiYmxvY2tEZWZzIiwibW9kZWwiLCJvcmlnUHJlZml4IiwicmV2ZXJzZSIsImJsb2NrRGVmc09iaiIsImkiLCJwcmVmaXgiLCJ2YWxpZCIsInNwbGljZSIsImxlbmd0aCIsInR5cGUiLCJwcm9wIiwiaGFzT3duUHJvcGVydHkiLCJTdHJpbmciLCJsb2ciLCJNYXRoIiwibWF4IiwiTnVtYmVyIiwiaiIsInVuZGVmaW5lZCIsIndhcm4iLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUNBLElBQUlBLFFBQVVDLFFBQVEsV0FHbEJDLFdBQWEsU0FBU0MsRUFBV0MsRUFBV0MsRUFBT0MsRUFBWUMsR0FDakUsSUFBSUMsRUFBY0MsRUFBR0MsRUFDakJDLEVBQVEsRUFFWixRQURzQixJQUFYSixJQUF3QkEsR0FBVSxRQUNwQixJQUFkSCxHQUF3RCxtQkFBcEJBLEVBQVVRLE9BRXZELElBREFKLEtBQ0tDLEVBQUksRUFBR0EsRUFBSUwsRUFBVVMsT0FBUUosSUFBS0QsRUFBYUosRUFBVUssR0FBR0ssTUFBUVYsRUFBVUssUUFFbkZELEVBQWVKLEVBRWpCLElBQUssSUFBSVcsS0FBUVosRUFDZixHQUFJQSxFQUFVYSxlQUFlRCxHQUUzQixHQURBTCxPQUErQixJQUFmSixFQUE2QkEsRUFBYSxJQUFNUyxFQUFPQSxFQUNsRVYsRUFBTVcsZUFBZUQsR0FVbkIsVUFBV1YsRUFBTVUsV0FBZ0JaLEVBQVVZLEdBRTVCLE9BQWhCVixFQUFNVSxJQUFzQyxPQUFwQlosRUFBVVksS0FDVixpQkFBZlYsRUFBTVUsR0FDWEUsT0FBT2QsRUFBVVksS0FBVVosRUFBVVksS0FDdkNmLFFBQVFrQixJQUFJLHlCQUEwQlIsU0FBZUwsRUFBTVUsVUFBY1osRUFBVVksR0FBT1YsRUFBTVUsR0FBT1osRUFBVVksSUFDakhKLEVBQVFRLEtBQUtDLElBQUlULEVBQU8sSUFFSyxpQkFBZk4sRUFBTVUsR0FDbEJNLE9BQU9sQixFQUFVWSxLQUFVWixFQUFVWSxLQUN2Q2YsUUFBUWtCLElBQUkseUJBQTBCUixTQUFlTCxFQUFNVSxVQUFjWixFQUFVWSxHQUFPVixFQUFNVSxHQUFPWixFQUFVWSxJQUNqSEosRUFBUVEsS0FBS0MsSUFBSVQsRUFBTyxLQUcxQlgsUUFBUWtCLElBQUkseUJBQTBCUixTQUFlTCxFQUFNVSxVQUFjWixFQUFVWSxHQUFPVixFQUFNVSxHQUFPWixFQUFVWSxJQUNqSEosRUFBUVEsS0FBS0MsSUFBSVQsRUFBTyxVQUd2QixHQUE4QixpQkFBbkJSLEVBQVVZLEdBQzFCLEdBQXdCLE9BQXBCWixFQUFVWSxHQUNaLFFBQXNDLElBQTNCWixFQUFVWSxHQUFNSCxRQUN6QixHQUFJVCxFQUFVWSxHQUFNRixPQUFTLEVBQzNCLEdBQUlSLEVBQU1VLEdBQU1GLE9BQVMsRUFBRyxDQUUxQixJQUFJUyxFQUFJLEVBQ1IsSUFBS2IsRUFBSSxFQUFHQSxFQUFJSixFQUFNVSxHQUFNRixPQUFRSixJQUNsQyxHQUFrQyxpQkFBdkJKLEVBQU1VLEdBQU1OLEdBQUdLLEtBQWtCLENBQzFDLEtBQU9RLEVBQUluQixFQUFVWSxHQUFNRixRQUFVVixFQUFVWSxHQUFNTyxHQUFHUixPQUFTVCxFQUFNVSxHQUFNTixHQUFHSyxNQUM5RWQsUUFBUWtCLElBQUksWUFBYVIsRUFBUVAsRUFBVVksR0FBTU8sR0FBR1IsS0FBTSwrQ0FDMURRLElBRUYsR0FBSUEsR0FBS25CLEVBQVVZLEdBQU1GLE9BQVEsQ0FDL0JiLFFBQVFrQixJQUFJLG9CQUFxQlIsRUFBUUwsRUFBTVUsR0FBTU4sR0FBR0ssS0FBTSx1QkFDOURILEVBQVFRLEtBQUtDLElBQUlULEVBQU8sR0FDeEIsTUFHRkEsRUFBUVEsS0FBS0MsSUFBSVQsRUFBT1QsV0FBV0MsRUFBVVksR0FBTU8sUUFBSUMsRUFBV2xCLEVBQU1VLEdBQU1OLEdBQUlDLEVBQVMsSUFBTUQsRUFBSSxJQUFNSixFQUFNVSxHQUFNTixHQUFHSyxLQUFPLFlBS3JJLElBQUtMLEVBQUksRUFBR0EsRUFBSU4sRUFBVVksR0FBTUYsT0FBUUosSUFDQyxpQkFBNUJOLEVBQVVZLEdBQU1OLEdBQUdLLE1BQzVCZCxRQUFRa0IsSUFBSSxvQ0FBcUNSLEVBQVFQLEVBQVVZLEdBQU1OLElBQ3pFRSxFQUFRUSxLQUFLQyxJQUFJVCxFQUFPLElBQ2RILEVBQWFRLGVBQWViLEVBQVVZLEdBQU1OLEdBQUdLLE1BTXpESCxFQUFRUSxLQUFLQyxJQUFJVCxFQUFPVCxXQUFXTSxFQUFhTCxFQUFVWSxHQUFNTixHQUFHSyxNQUFPTixFQUFjTCxFQUFVWSxHQUFNTixHQUFJQyxFQUFTLElBQU1ELEVBQUksSUFBTU4sRUFBVVksR0FBTU4sR0FBR0ssS0FBTyxPQUwvSmQsUUFBUXdCLEtBQUssOEVBQStFZCxFQUFRUCxFQUFVWSxHQUFNTixJQUNwSE4sRUFBVVksR0FBTUgsT0FBT0gsRUFBRyxHQUMxQkEsSUFDQUUsRUFBUVEsS0FBS0MsSUFBSVQsRUFBTyxTQVFaLE9BQWhCTixFQUFNVSxHQUNKUixHQUNGUCxRQUFRa0IsSUFBSSw2QkFBOEJSLEVBQVEsYUFBY1AsRUFBVVksR0FBTyxlQUNqRkosRUFBUVEsS0FBS0MsSUFBSVQsRUFBTyxVQUNqQlIsRUFBVVksS0FFakJmLFFBQVFrQixJQUFJLDZCQUE4QlIsRUFBUSxhQUFjUCxFQUFVWSxHQUFPLGlDQUNqRkosRUFBUVEsS0FBS0MsSUFBSVQsRUFBTyxHQUN4Qk4sRUFBTVUsR0FBUVosRUFBVVksSUFHMUJKLEVBQVFRLEtBQUtDLElBQUlULEVBQU9ULFdBQVdDLEVBQVVZLEdBQU9QLEVBQWNILEVBQU1VLEdBQU9MLEVBQVFILFNBR2xFLE9BQWhCRixFQUFNVSxLQUNmZixRQUFRa0IsSUFBSSwrQ0FBZ0RSLEVBQVFMLEVBQU1VLElBQzFFSixFQUFRUSxLQUFLQyxJQUFJVCxFQUFPLFFBRVUsaUJBQXBCUixFQUFVWSxJQUFpRCxrQkFBcEJaLEVBQVVZLElBQWtELGlCQUFwQlosRUFBVVksS0FDekdmLFFBQVFrQixJQUFJLHdCQUF5QlIsU0FBZVAsRUFBVVksSUFDOURKLEVBQVFRLEtBQUtDLElBQUlULEVBQU8sU0F2RnBCSixHQUNGUCxRQUFRd0IsS0FBSyxpQkFBa0JkLEVBQVEsMkRBQ3ZDQyxFQUFRUSxLQUFLQyxJQUFJVCxFQUFPLFVBQ2pCUixFQUFVWSxLQUVqQmYsUUFBUWtCLElBQUksaUJBQWtCUixFQUFRLDZDQUN0Q0MsRUFBUVEsS0FBS0MsSUFBSVQsRUFBTyxHQUN4Qk4sRUFBTVUsR0FBUVosRUFBVVksSUFxRmhDLE9BREtSLElBQVNJLEVBQVFRLEtBQUtDLElBQUlULEVBQU9ULFdBQVdHLEVBQU9ELEVBQVdELE9BQWlDLElBQWZHLEVBQTZCQSxFQUFhLEtBQU8sTUFBTSxLQUNySUssR0FHVGMsT0FBT0MsUUFBVXhCIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL2NvbnZlcnRlci9jaGVja21vZGVsLmpzIn0=",
"\"use strict\";var converterUtils=require(\"./utils.js\"),cssParse=require(\"mensch/lib/parser.js\"),console=require('console-browserify'),domutils=require(\"./domutils.js\"),_declarationValueLookup=function(e,t,r){for(var l=e.length-1;l>=0;l--)if(\"property\"==e[l].type&&e[l].name==t)return _declarationValueUrlPrefixer(e[l].value,r);return null},_propToCamelCase=function(e){return e.replace(/-([a-z])/g,function(e,t,r,l){return t.toUpperCase()})},_declarationValueUrlPrefixer=function(e,t){return e.match(/url\\(.*\\)/)?e.replace(/(url\\()([^\\)]*)(\\))/g,function(e,r,l,i){var n=l.trim(),o=l.trim().charAt(0);\"'\"==o||'\"'==o?n=n.substr(1,n.length-2):o=\"\";var a=t(n);return null!==a?r+o+a+o+i:e}):e},elaborateDeclarations=function(e,t,r,l,i,n,o){var a=\"object\"==typeof n&&null!==n?n:{},u=null,s=0;void 0===t&&(t=cssParse(\"#{\\n\"+e+\"}\",{comments:!0,position:!0}).stylesheet.rules[0].declarations,s=1);for(var v=t.length-1;v>=0;v--)if(\"property\"==t[v].type)if(!0===o&&\"display\"==t[v].name&&\"none\"==t[v].value)null===u&&(u=e),u=converterUtils.removeStyle(u,t[v].position.start,t[v].position.end,s,0,0,\"\");else{var d=t[v].name.match(/^-ko-(bind-|attr-)?([a-z0-9-]*?)(-if|-ifnot)?$/);if(null!==d){null===u&&void 0!==e&&(u=e);var c,f,p,m=\"attr-\"==d[1],y=\"bind-\"==d[1],h=d[2],b=\"-if\"==d[3]||\"-ifnot\"==d[3];if(b){if(c=t[v].name.substr(0,t[v].name.length-d[3].length),null===_declarationValueLookup(t,c,r))throw\"Unable to find declaration \"+c+\" for \"+t[v].name}else{if((m||y)&&void 0===i&&void 0!==e)throw\"Attributes and bind declarations are only allowed in inline styles!\";var S,g=!0;if(m?(p=domutils.getAttribute(i,h),g=!1,S=\"virtualAttr\"):y?(S=null,\"text\"==h?void 0!==i?p=domutils.getInnerText(i):g=!1:\"html\"==h&&void 0!==i?p=domutils.getInnerHtml(i):g=!1):((g=void 0!==e)&&(p=_declarationValueLookup(t,h,r)),S=\"virtualStyle\"),g&&null===p)throw console.error(\"Cannot find default value for\",t[v].name,t),\"Cannot find default value for \"+t[v].name+\": \"+t[v].value+\" in \"+i+\" (\"+typeof e+\"/\"+h+\")\";var w=p,U=y||m?-1!=h.indexOf(\"-\")?\"'\"+h+\"'\":h:_propToCamelCase(h);try{f=converterUtils.expressionBinding(t[v].value,l,w)}catch(e){throw console.error(\"Model ensure path failed\",e.stack,\"name\",t[v].name,\"value\",t[v].value,\"default\",p,\"element\",i),e}null!==S&&void 0===a[S]&&(a[S]={}),\"virtualAttr\"==S&&\"href\"==U&&(S=null,U=\"wysiwygHref\",void 0!==i&&null!==i&&domutils.removeAttribute(i,\"href\"));var x=_declarationValueLookup(t,t[v].name+\"-if\",r),_=!1;if(null===x)x=_declarationValueLookup(t,t[v].name+\"-ifnot\",r),_=!0;else if(null!==_declarationValueLookup(t,t[v].name+\"-ifnot\",r))throw\"Unexpected error: cannot use both -if and -ifnot property conditions\";if(null!==x)try{var A=converterUtils.conditionBinding(x,l);f=(_?\"!\":\"\")+\"(\"+A+\") ? \"+f+\" : null\"}catch(e){throw console.error(\"Unable to deal with -ko style binding condition\",x,t[v].name),e}null!==S?a[S][U]=f:a[U]=f}if(null!==u)try{if(void 0!==i&&null!==i)u=converterUtils.removeStyle(u,t[v].position.start,t[v].position.end,s,0,0,\"\");else{var k=\"\";b||(k=h+\": \\x3c!-- ko text: \"+f+\" --\\x3e\"+p+\"\\x3c!-- /ko --\\x3e\"),u=converterUtils.removeStyle(u,t[v].position.start,t[v].position.end,s,0,0,k)}}catch(e){throw console.warn(\"Remove style failed\",e,\"name\",t[v]),e}}else{var C=_declarationValueUrlPrefixer(t[v].value,r);if(C!=t[v].value&&(null===u&&void 0!==e&&(u=e),null!==u))try{u=converterUtils.removeStyle(u,t[v].position.start,t[v].position.end,s,0,0,t[v].name+\": \"+C)}catch(e){throw console.log(\"Remove style failed replacing url\",e,\"name\",t[v]),e}var V=_propToCamelCase(t[v].name),P=\"virtualAttrStyle\",j=void 0!==a.virtualStyle?a.virtualStyle[V]:void 0,z=\" \";void 0===a[P]&&(a[P]=\"''\",z=\"\"),void 0!==j?(a[P]=\"'\"+t[v].name+\": '+(\"+j+\")+';\"+z+\"'+\"+a[P],delete a.virtualStyle[V]):a[P]=\"'\"+t[v].name+\": \"+converterUtils.addSlashes(C)+\";\"+z+\"'+\"+a[P]}}if(void 0!==i&&null!==i){for(var L in a.virtualStyle)if(a.virtualStyle.hasOwnProperty(L))throw console.log(\"Unexpected virtualStyle binding after conversion to virtualAttr.style\",L,a.virtualStyle[L],e),\"Unexpected virtualStyle binding after conversion to virtualAttr.style for \"+L;delete a.virtualStyle;var q=domutils.getAttribute(i,\"data-bind\"),O=(null!==q?q+\", \":\"\")+_bindingSerializer(a);domutils.setAttribute(i,\"data-bind\",O)}if(void 0===e){var T=!1;for(var B in a.virtualStyle)if(a.virtualStyle.hasOwnProperty(B)){T=!0;break}if(T){if(void 0!==a.virtualAttrStyle){var D=a.virtualAttrStyle;delete a.virtualAttrStyle,a.virtualAttrStyle=D}}else delete a.virtualStyle;return _bindingSerializer(a)}return u},_bindingSerializer=function(e){var t=[];for(var r in e)e.hasOwnProperty(r)&&(\"object\"==typeof e[r]?t.push(r+\": { \"+_bindingSerializer(e[r])+\" }\"):t.push(r+\": \"+e[r]));return t.reverse().join(\", \")};module.exports=elaborateDeclarations;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlY2xhcmF0aW9ucy5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0ZXJVdGlscyIsInJlcXVpcmUiLCJjc3NQYXJzZSIsImNvbnNvbGUiLCJkb211dGlscyIsIl9kZWNsYXJhdGlvblZhbHVlTG9va3VwIiwiZGVjbGFyYXRpb25zIiwicHJvcGVydHluYW1lIiwidGVtcGxhdGVVcmxDb252ZXJ0ZXIiLCJpIiwibGVuZ3RoIiwidHlwZSIsIm5hbWUiLCJfZGVjbGFyYXRpb25WYWx1ZVVybFByZWZpeGVyIiwidmFsdWUiLCJfcHJvcFRvQ2FtZWxDYXNlIiwicHJvcE5hbWUiLCJyZXBsYWNlIiwibWF0Y2giLCJjb250ZW50cyIsIm9mZnNldCIsInMiLCJ0b1VwcGVyQ2FzZSIsIm1hdGNoZWQiLCJwcmVmaXgiLCJ1cmwiLCJwb3N0Zml4IiwidHJpbW1lZCIsInRyaW0iLCJhcGljZSIsImNoYXJBdCIsInN1YnN0ciIsIm5ld1VybCIsImVsYWJvcmF0ZURlY2xhcmF0aW9ucyIsInN0eWxlIiwiYmluZGluZ1Byb3ZpZGVyIiwiZWxlbWVudCIsImJhc2ljQmluZGluZ3MiLCJyZW1vdmVEaXNwbGF5Tm9uZSIsIm5ld0JpbmRpbmdzIiwibmV3U3R5bGUiLCJza2lwTGluZXMiLCJjb21tZW50cyIsInBvc2l0aW9uIiwic3R5bGVzaGVldCIsInJ1bGVzIiwicmVtb3ZlU3R5bGUiLCJzdGFydCIsImVuZCIsImRlY2wiLCJjb25kRGVjbCIsImJpbmRWYWx1ZSIsInByb3BEZWZhdWx0VmFsdWUiLCJpc0F0dHIiLCJpc0JpbmQiLCJpc0lmIiwiYmluZFR5cGUiLCJuZWVkRGVmYXVsdFZhbHVlIiwiZ2V0QXR0cmlidXRlIiwiZ2V0SW5uZXJUZXh0IiwiZ2V0SW5uZXJIdG1sIiwiZXJyb3IiLCJiaW5kRGVmYXVsdFZhbHVlIiwiYmluZE5hbWUiLCJpbmRleE9mIiwiZXhwcmVzc2lvbkJpbmRpbmciLCJlIiwic3RhY2siLCJyZW1vdmVBdHRyaWJ1dGUiLCJkZWNsYXJhdGlvbkNvbmRpdGlvbiIsIm5vdCIsImJpbmRpbmdDb25kIiwiY29uZGl0aW9uQmluZGluZyIsInJlcGxhY2VkV2l0aCIsIndhcm4iLCJyZXBsYWNlZFZhbHVlIiwibG9nIiwiYmluZE5hbWUyIiwiYmluZCIsImJpbmRWYWwyIiwidW5kZWZpbmVkIiwiZGlzdCIsImFkZFNsYXNoZXMiLCJwcm9wIiwiaGFzT3duUHJvcGVydHkiLCJjdXJyZW50QmluZGluZ3MiLCJkYXRhQmluZCIsIl9iaW5kaW5nU2VyaWFsaXplciIsInNldEF0dHJpYnV0ZSIsImhhc1ZpcnR1YWxTdHlsZSIsInByb3AxIiwidnMiLCJ2YWwiLCJyZXMiLCJwdXNoIiwicmV2ZXJzZSIsImpvaW4iLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxhQU1BLElBQUlBLGVBQWlCQyxRQUFRLGNBQ3pCQyxTQUFXRCxRQUFRLHdCQUNuQkUsUUFBVUYsUUFBUSxXQUNsQkcsU0FBV0gsUUFBUSxpQkFFbkJJLHdCQUEwQixTQUFTQyxFQUFjQyxFQUFjQyxHQUNqRSxJQUFLLElBQUlDLEVBQUlILEVBQWFJLE9BQVMsRUFBR0QsR0FBSyxFQUFHQSxJQUM1QyxHQUE0QixZQUF4QkgsRUFBYUcsR0FBR0UsTUFBc0JMLEVBQWFHLEdBQUdHLE1BQVFMLEVBQ2hFLE9BQU9NLDZCQUE2QlAsRUFBYUcsR0FBR0ssTUFBT04sR0FHL0QsT0FBTyxNQUdMTyxpQkFBbUIsU0FBU0MsR0FDOUIsT0FBT0EsRUFBU0MsUUFBUSxZQUFhLFNBQVNDLEVBQU9DLEVBQVVDLEVBQVFDLEdBQ3JFLE9BQU9GLEVBQVNHLGlCQUloQlQsNkJBQStCLFNBQVNDLEVBQU9OLEdBQ2pELE9BQUlNLEVBQU1JLE1BQU0sYUFDQ0osRUFBTUcsUUFBUSx1QkFBd0IsU0FBU00sRUFBU0MsRUFBUUMsRUFBS0MsR0FDbEYsSUFBSUMsRUFBVUYsRUFBSUcsT0FDZEMsRUFBUUosRUFBSUcsT0FBT0UsT0FBTyxHQUNqQixLQUFURCxHQUEwQixLQUFUQSxFQUNuQkYsRUFBVUEsRUFBUUksT0FBTyxFQUFH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",
"\"use strict\";var $=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null);function _extend(e,t){if(t)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}var objExtend=function(e,t){return\"function\"==typeof $.extend?$.extend(!0,e,t):_extend(e,JSON.parse(JSON.stringify(t)))},getAttribute=function(e,t){var n=$(e).attr(t);return void 0===n&&(n=null),n},setAttribute=function(e,t,n){$(e).attr(t,n)},removeAttribute=function(e,t){$(e).removeAttr(t)},getInnerText=function(e){return $(e).text()},getInnerHtml=function(e){return $(e).html()},getLowerTagName=function(e){return\"\"===e.tagName&&\"string\"==typeof e.name?e.name.toLowerCase():\"\"!==e.tagName?e.tagName.toLowerCase():$(e).prop(\"tagName\").toLowerCase()},setContent=function(e,t){$(e).html(t)},replaceHtml=function(e,t){$(e).replaceWith(t)},removeElements=function(e,t){t&&void 0!==e.detach&&e.detach(),e.remove()};module.exports={getAttribute:getAttribute,setAttribute:setAttribute,removeAttribute:removeAttribute,getInnerText:getInnerText,getInnerHtml:getInnerHtml,getLowerTagName:getLowerTagName,setContent:setContent,replaceHtml:replaceHtml,removeElements:removeElements,objExtend:objExtend};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRvbXV0aWxzLmpzIl0sIm5hbWVzIjpbIiQiLCJyZXF1aXJlIiwiX2V4dGVuZCIsInRhcmdldCIsInNvdXJjZSIsInByb3AiLCJoYXNPd25Qcm9wZXJ0eSIsIm9iakV4dGVuZCIsIm9iaiIsImV4dGVuZGVyIiwiZXh0ZW5kIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiZ2V0QXR0cmlidXRlIiwiZWxlbWVudCIsImF0dHJpYnV0ZSIsInJlcyIsImF0dHIiLCJzZXRBdHRyaWJ1dGUiLCJ2YWx1ZSIsInJlbW92ZUF0dHJpYnV0ZSIsInJlbW92ZUF0dHIiLCJnZXRJbm5lclRleHQiLCJ0ZXh0IiwiZ2V0SW5uZXJIdG1sIiwiaHRtbCIsImdldExvd2VyVGFnTmFtZSIsInRhZ05hbWUiLCJuYW1lIiwidG9Mb3dlckNhc2UiLCJzZXRDb250ZW50IiwiY29udGVudCIsInJlcGxhY2VIdG1sIiwicmVwbGFjZVdpdGgiLCJyZW1vdmVFbGVtZW50cyIsIiRlbGVtZW50cyIsInRyeURldGFjaCIsImRldGFjaCIsInJlbW92ZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLGFBTUEsSUFBSUEsRUFBSUMsUUFBUSxVQUVoQixTQUFTQyxRQUFRQyxFQUFRQyxHQUN2QixHQUFJQSxFQUNGLElBQUssSUFBSUMsS0FBUUQsRUFDWEEsRUFBT0UsZUFBZUQsS0FDeEJGLEVBQU9FLEdBQVFELEVBQU9DLElBSTVCLE9BQU9GLEVBR1QsSUFBSUksVUFBWSxTQUFTQyxFQUFLQyxHQUM1QixNQUF1QixtQkFBWlQsRUFBRVUsT0FDSlYsRUFBRVUsUUFBTyxFQUFNRixFQUFLQyxHQUVwQlAsUUFBUU0sRUFBS0csS0FBS0MsTUFBTUQsS0FBS0UsVUFBVUosTUFJOUNLLGFBQWUsU0FBU0MsRUFBU0MsR0FDbkMsSUFBSUMsRUFBTWpCLEVBQUVlLEdBQVNHLEtBQUtGLEdBRTFCLFlBRGtCLElBQVBDLElBQW9CQSxFQUFNLE1BQzlCQSxHQUlMRSxhQUFlLFNBQVNKLEVBQVNDLEVBQVdJLEdBQzlDcEIsRUFBRWUsR0FBU0csS0FBS0YsRUFBV0ksSUFJekJDLGdCQUFrQixTQUFTTixFQUFTQyxHQUN0Q2hCLEVBQUVlLEdBQVNPLFdBQVdOLElBSXBCTyxhQUFlLFNBQVNSLEdBQzFCLE9BQU9mLEVBQUVlLEdBQVNTLFFBS2hCQyxhQUFlLFNBQVNWLEdBQzFCLE9BQU9mLEVBQUVlLEdBQVNXLFFBSWhCQyxnQkFBa0IsU0FBU1osR0FJN0IsTUFBd0IsS0FBcEJBLEVBQVFhLFNBQXlDLGlCQUFoQmIsRUFBUWMsS0FBeUJkLEVBQVFjLEtBQUtDLGNBQzNELEtBQXBCZixFQUFRYSxRQUF1QmIsRUFBUWEsUUFBUUUsY0FDNUM5QixFQUFFZSxHQUFTVixLQUFLLFdBQVd5QixlQUloQ0MsV0FBYSxTQUFTaEIsRUFBU2lCLEdBQ2pDaEMsRUFBRWUsR0FBU1csS0FBS00sSUFJZEMsWUFBYyxTQUFTbEIsRUFBU1csR0FDbEMxQixFQUFFZSxHQUFTbUIsWUFBWVIsSUFJckJTLGVBQWlCLFNBQVNDLEVBQVdDLEdBQ25DQSxRQUF5QyxJQUFyQkQsRUFBVUUsUUFBd0JGLEVBQVVFLFNBRXBFRixFQUFVRyxVQUdaQyxPQUFPQyxTQUNMM0IsYUFBY0EsYUFDZEssYUFBY0EsYUFDZEUsZ0JBQWlCQSxnQkFDakJFLGFBQWNBLGFBQ2RFLGFBQWNBLGFBQ2RFLGdCQUFpQkEsZ0JBQ2pCSSxXQUFZQSxXQUNaRSxZQUFhQSxZQUNiRSxlQUFnQkEsZUFDaEI1QixVQUFXQSIsImZpbGUiOiIvaG9tZS9idXJlcy9tb3NhaWNvL3NyYy9qcy9jb252ZXJ0ZXIvZG9tdXRpbHMuanMifQ==",
"\"use strict\";var console=require('console-browserify'),elaborateDeclarations=require(\"./declarations.js\"),utils=require(\"./utils.js\"),modelDef=require(\"./model.js\"),_getOptionsObject=function(e){for(var t=e.split(\"|\"),o={},i=0;i<t.length;i++){var l=t[i].split(\"=\");o[l[0]]=l.length>1?l[1]:l[0]}return o},_filterProps=function(e,t,o){var i=[];for(var l in e)if(!l.match(/^customStyle$/)&&!l.match(/^_/)&&e.hasOwnProperty(l)){var a=null!==e[l]&&void 0!==e[l]._category&&\"style\"==e[l]._category;if(\"id\"==l||\"type\"==l||l.match(/Blocks$/));else if(\"styler\"==t)(a||o>0)&&i.push(l);else if(\"edit\"==t){null!==e[l]&&void 0!==e[l]._category&&\"content\"==e[l]._category&&(void 0===e[l]._context||\"block\"!=e[l]._context)&&i.push(l)}else void 0===t&&i.push(l)}return i},_propInput=function(e,t,o,i,l){var a,n=\"\";if(null!==e&&void 0!==e._widget&&(a=e._widget),void 0===a)throw\"Unknown data type for \"+t;var s=\"focusable: true\";if(\"edit\"==i&&(s+=\", event: { focus: function(ui, event) { $($element).click(); } } \"),n+='<label class=\"data-'+a+'\"'+(\"boolean\"==a?\" data-bind=\\\"event: { mousedown: function(ui, evt) { if (evt.button == 0) { var input = $($element).find('input'); var ch = input.prop('checked'); setTimeout(function() { input.click(); input.prop('checked', !ch); input.trigger('change'); }, 0); } } }, click: function(ui, evt) { evt.preventDefault(); }, clickBubble: false\\\"\":\"\")+\">\",void 0!==l&&void 0!==l[a]){var d=l[a],r={};if(void 0!==d.parameters)for(var c in d.parameters)d.parameters.hasOwnProperty(c)&&void 0!==e[\"_\"+c]&&(r[c]=e[\"_\"+c]);n+=d.html(o,s,r)}else if(\"boolean\"==a)n+='<input type=\"checkbox\" value=\"nothing\" data-bind=\"checked: '+o+\", \"+s+'\" />',n+='<span class=\"checkbox-replacer\" ></span>';else if(\"color\"==a)n+='<input size=\"7\" type=\"text\" data-bind=\"colorpicker: { color: '+o+\", strings: $root.t('Theme Colors,Standard Colors,Web Colors,Theme Colors,Back to Palette,History,No history yet.') }, , \"+s+'\" />';else if(\"select\"==a){if(void 0!==e._options){var p=_getOptionsObject(e._options);for(var v in n+='<select data-bind=\"value: '+o+\", \"+s+'\">',p)p.hasOwnProperty(v)&&(n+='<option value=\"'+v+\"\\\" data-bind=\\\"text: $root.ut('template', '\"+utils.addSlashes(p[v])+\"')\\\">\"+p[v]+\"</option>\");n+=\"</select>\"}}else if(\"font\"==a)n+='<select type=\"text\" data-bind=\"value: '+o+\", \"+s+'\">',n+='<optgroup label=\"Sans-Serif Fonts\">',n+='<option value=\"Arial,Helvetica,sans-serif\">Arial</option>',n+=\"<option value=\\\"'Comic Sans MS',cursive,sans-serif\\\">Comic Sans MS</option>\",n+='<option value=\"Impact,Charcoal,sans-serif\">Impact</option>',n+=\"<option value=\\\"'Trebuchet MS',Helvetica,sans-serif\\\">Trebuchet MS</option>\",n+='<option value=\"Verdana,Geneva,sans-serif\">Verdana</option>',n+=\"</optgroup>\",n+='<optgroup label=\"Serif Fonts\">',n+='<option value=\"Georgia,serif\">Georgia</option>',n+=\"<option value=\\\"'Times New Roman',Times,serif\\\">Times New Roman</option>\",n+=\"</optgroup>\",n+='<optgroup label=\"Monospace Fonts\">',n+=\"<option value=\\\"'Courier New',Courier,monospace\\\">Courier New</option>\",n+=\"</optgroup>\",n+=\"</select>\";else if(\"url\"==a)n+='<div class=\"ui-textbutton\">',n+='<input class=\"ui-textbutton-input\" size=\"7\" type=\"url\" pattern=\"(mailto:.+@.+|https?://.+\\\\..+|\\\\[.*\\\\].*)\" value=\"nothing\" data-bind=\"css: { withButton: typeof $root.linkDialog !== \\'undefined\\' }, validatedValue: '+o+\", \"+s+'\" />',n+=\"<a class=\\\"ui-textbutton-button\\\" data-bind=\\\"visible: typeof $root.linkDialog !== 'undefined', click: typeof $root.linkDialog !== 'undefined' ? $root.linkDialog.bind($element.previousSibling) : false, button: { icons: { primary: 'fa fa-fw fa-ellipsis-h' }, label: 'Opzioni', text: false }\\\">Opzioni</a>\",n+=\"</div>\";else if(\"integer\"==a){var u=0,b=1e3;null!==e&&void 0!==e._max&&(b=e._max),null!==e&&void 0!==e._min&&(u=e._min);var f=b-u>=100?10:1;n+='<input class=\"number-spinner\" size=\"7\" step=\"'+f+'\" type=\"number\" value=\"-1\" data-bind=\"spinner: { min: '+u+\", max: \"+b+\", page: \"+5*f+\", value: \"+o+\" }, valueUpdate: ['change', 'spin'], \"+s+'\" />'}else n+='<input size=\"7\" type=\"text\" value=\"nothing\" data-bind=\"value: '+o+\", \"+s+'\" />';return n+=\"</label>\"},_getGlobalStyleProp=function(e,t,o,i){var l;return\"object\"==typeof t&&null!==t&&void 0===t._widget||void 0!==o&&void 0!==i&&i.length>0&&\"object\"==typeof e&&void 0!==e[i]&&(l=e[i]),l},_propEditor=function(e,t,o,i,l,a,n,s,d,r,c,p,v,u,b){if(void 0===d&&(d=0),void 0!==n&&\"object\"==typeof i&&null!==i&&void 0===i._usecount)return console.log(\"TODO EDITOR ignoring\",a,\"property because it is not used by the template\",\"prop:\",n,\"type:\",s,\"level:\",d,e._templateName),\"\";var f,h=void 0!==p?n+\"._defaultComputed\":n,m=\"\",g=h,_=1,k=1;if(\"object\"==typeof i&&null!==i&&void 0===i._widget||void 0===p&&(_+=1),void 0===p&&void 0!==r&&(k+=r),void 0!==n&&v&&(m+=\"\\x3c!-- ko ifSubs: { data: \"+g+\", threshold: \"+k+\", gutter: \"+_+\" } --\\x3e\"),void 0===n||null!==i&&void 0!==i._name||console.log(\"TODO WARN Missing label for property \",n),void 0===n&&null!==i&&void 0===i._name&&console.log(\"TODO WARN Missing label for object \",i.type),\"object\"==typeof i&&null!==i&&void 0===i._widget){var y=_filterProps(i,s,d),x=\"styler\"==s&&null!==i&&void 0!==i.customStyle&&void 0!==p,S=\"\",w=\"\";void 0!==n&&\"edit\"==s&&(S=\", click: function(obj, evt) { $root.selectItem(\"+n+\", $data); return false }, clickBubble: false, css: { selecteditem: $root.isSelectedItem(\"+n+\") }, scrollIntoView: $root.isSelectedItem(\"+n+\"), \",w+=\" selectable\"),x&&(w+=\" supportsCustomStyles\"),m+='<div class=\"objEdit level'+d+w+'\" data-bind=\"tooltips: {}'+S+'\">';var $,D,j,B=null!==i&&void 0!==i._name?i._name:void 0!==n?\"[\"+n+\"]\":\"\";if(x){var E=\"Stile\";void 0!==l&&null!==l&&void 0!==l._name?E=l._name:console.log(\"TODO missing label for theme section \",n,null!==i?i.type:\"-\"),B=\"<span class=\\\"blockSelectionMethod\\\" data-bind=\\\"text: customStyle() ? $root.ut('template', '\"+utils.addSlashes(B)+\"') : $root.ut('template', '\"+utils.addSlashes(E)+\"')\\\">Block</span>\"}else B=\"<span data-bind=\\\"text: $root.ut('template', '\"+utils.addSlashes(B)+\"')\\\">\"+B+\"</span>\";if(m+=\"<span\"+(f=null!==i&&void 0!==i._help?' title=\"'+utils.addSlashes(i._help)+\"\\\" data-bind=\\\"attr: { title: $root.ut('template', '\"+utils.addSlashes(i._help)+\"') }\\\"\":\"\")+' class=\"objLabel level'+d+'\">'+B+\"</span>\",\"edit\"==s&&void 0!==i._blockDescription&&(m+=\"<div class=\\\"blockDescription\\\" data-bind=\\\"html: $root.ut('template', '\"+utils.addSlashes(i._blockDescription)+\"')\\\">\"+i._blockDescription+\"</div>\"),x&&(m+='<label class=\"data-boolean blockCheck\" data-bind=\"tooltips: { }\">',m+='<input type=\"checkbox\" value=\"nothing\" data-bind=\"focusable: true, checked: customStyle\" />',m+='<span title=\"Switch between global and block level styles editing\" data-bind=\"attr: { title: $root.t(\\'Switch between global and block level styles editing\\') }\" class=\"checkbox-replacer checkbox-replacer-onoff\"></span>',m+=\"</label>\",m+=\"\\x3c!-- ko template: { name: 'customstyle', if: customStyle } --\\x3e\\x3c!-- /ko --\\x3e\"),void 0!==n)if(m+=\"\\x3c!-- ko with: \"+n+\" --\\x3e\",1==d&&void 0!==n)if(void 0!==i._previewBindings&&void 0!==e)void 0!==u&&(m+='\\x3c!-- ko with: $root.content() --\\x3e<div class=\"objPreview\" data-bind=\"'+u+'\"></div>\\x3c!-- /ko --\\x3e'),void 0!==b&&(m+='\\x3c!-- ko with: $parent --\\x3e<div class=\"objPreview\" data-bind=\"'+b+'\"></div>\\x3c!-- /ko --\\x3e'),m+='<div class=\"objPreview\"><div class=\"objPreviewInner\" data-bind=\"'+elaborateDeclarations(void 0,i._previewBindings,o,e.bind(this,a+\".\"))+'\"></div></div>';0===d&&void 0!==i._previewBindings&&($=elaborateDeclarations(void 0,i._previewBindings,o,e.bind(this,a.length>0?a+\".\":\"\")));var O,T=m.length;for(D=0;D<y.length;D++)j=a.length>0?a+\".\"+y[D]:y[D],\"object\"==typeof i[y[D]]&&null!==i[y[D]]&&void 0===i[y[D]]._widget||(O=void 0,0===d&&\"theme\"==y[D]?m+=_propEditor(e,t,o,i[y[D]],void 0,j,y[D],s,0,r,void 0,void 0,v,u):(O=_getGlobalStyleProp(c,i[y[D]],y[D],j),m+=_propEditor(e,t,o,i[y[D]],void 0,j,y[D],s,d+1,r,c,O,v,u,$)));for(D=0;D<y.length;D++)j=a.length>0?a+\".\"+y[D]:y[D],\"object\"==typeof i[y[D]]&&null!==i[y[D]]&&void 0===i[y[D]]._widget&&(O=void 0,0===d&&\"theme\"==y[D]?m+=_propEditor(e,t,o,i[y[D]],void 0,j,y[D],s,0,r,void 0,void 0,v,u):(O=_getGlobalStyleProp(c,i[y[D]],y[D],j),m+=_propEditor(e,t,o,i[y[D]],void 0,j,y[D],s,d+1,r,c,O,v,u,$)));if(0===m.length-T){if(\"object\"==typeof i&&null!==i&&\"template\"==i._context)return\"\";m+='<div class=\"objEmpty\" data-bind=\"html: $root.t(\\'Selected element has no editable properties\\')\">Selected element has no editable properties</div>'}void 0!==n&&(m+=\"\\x3c!-- /ko --\\x3e\"),m+=\"</div>\"}else{var C=!0;if(void 0===c&&(C=!1),null===i||\"object\"!=typeof i||void 0!==i._widget){var I=[];void 0!==p&&I.push(\"css: { notnull: \"+n+\"() !== null }\"),(f=null!==i&&void 0!==i._help?' title=\"'+utils.addSlashes(i._help)+\"\\\" data-bind=\\\"attr: { title: $root.ut('template', '\"+utils.addSlashes(i._help)+\"') }\\\"\":\"\").length>0&&I.push(\"tooltips: {}\");var P=I.length>0?'data-bind=\"'+utils.addSlashes(I.join())+'\"':\"\";m+='<div class=\"propEditor '+(C?\"checkboxes\":\"\")+'\"'+P+\">\";var N=null!==i&&void 0!==i._name?i._name:void 0!==n?\"[\"+n+\"]\":\"\";m+=\"<span\"+f+' class=\"propLabel\">'+(N=\"<span data-bind=\\\"text: $root.ut('template', '\"+utils.addSlashes(N)+\"')\\\">\"+N+\"</span>\")+\"</span>\",m+='<div class=\"propInput '+(void 0!==c?\"local\":\"\")+'\" data-bind=\"css: { default: '+n+'() === null }\">',m+=_propInput(i,n,h,s,t),m+=\"</div>\",void 0!==p&&(m+='<div class=\"propInput global\" data-bind=\"css: { overridden: '+n+'() !== null }\">',m+=_propInput(i,n,p,s,t),m+=\"</div>\",C&&(m+='<div class=\"propCheck\"><label data-bind=\"tooltips: {}\"><input type=\"checkbox\" data-bind=\"focusable: true, click: function(evt, obj) { $root.localGlobalSwitch('+n+\", \"+p+\"); return true; }, checked: \"+n+'() !== null\">',m+='<span class=\"checkbox-replacer\" data-bind=\"css: { checked: '+n+\"() !== null }, attr: { title: $root.t('This style is specific for this block: click here to remove the custom style and revert to the theme value') }\\\"></span>\",m+=\"</label></div>\")),m+=\"</div>\"}else m+=null===i||\"object\"!=typeof i?'<div class=\"propEditor unknown\">[A|'+n+\"|\"+typeof i+\"]</div>\":'<div class=\"propEditor unknown\">[B|'+n+\"|\"+typeof i+\"]</div>\"}return void 0!==n&&v&&(m+=\"\\x3c!-- /ko --\\x3e\",m+=\"\\x3c!-- ko ifSubs: { not: true, data: \"+g+\", threshold: \"+k+\", gutter: 0 } --\\x3e\",m+='<span class=\"label notused\">('+n+\")</span>\",m+=\"\\x3c!-- /ko --\\x3e\"),m},createBlockEditor=function(e,t,o,i,l,a,n,s,d,r,c,p){void 0===c&&(c=!0);var v,u=modelDef.getDef(e,a),b=modelDef.getDef(e,l);void 0!==b._previewBindings&&\"thaeme\"!=a&&\"styler\"==n&&(v=elaborateDeclarations(void 0,b._previewBindings,i,modelDef.getBindValue.bind(void 0,e,o,l,l,\"\")));var f,h=void 0!==r&&r?e[a]._globalStyles:void 0,m=void 0!==r&&r?e[a]._globalStyle:void 0;void 0!==m&&(f=modelDef.getDef(e,\"theme\")[m.replace(/^(\\$theme|_theme_)\\./,\"\")]);var g=modelDef.getBindValue.bind(void 0,e,o,l,a);g._templateName=a;var _='<div class=\"editor\">';_+='<div class=\"blockType'+(void 0!==h?\" withdefaults\":\"\")+'\">'+u.type+\"</div>\";var k=_propEditor(g,t,i,u,f,\"\",void 0,n,p,d,h,m,c,v);k.length>0&&(_+=k),s(_+=\"</div>\",a,n)},createBlockEditors=function(e,t,o,i,l,a,n,s){createBlockEditor(e,t,o,i,l,a,\"edit\",n,s),createBlockEditor(e,t,o,i,l,a,\"styler\",n,s,!0)},generateEditors=function(e,t,o,i,l){var a,n=e._defs,s=e.templateName,d=e._blocks,r=[];for(a=0;a<d.length;a++)void 0!==d[a].container&&r.push(modelDef.generateModel(n,d[a].block)),createBlockEditors(n,t,void 0,o,d[a].root,d[a].block,i,l);return void 0!==n.theme&&createBlockEditor(n,t,void 0,o,s,\"theme\",\"styler\",i,void 0,!1,!1,-1),r};module.exports=generateEditors;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVkaXRvci5qcyJdLCJuYW1lcyI6WyJjb25zb2xlIiwicmVxdWlyZSIsImVsYWJvcmF0ZURlY2xhcmF0aW9ucyIsInV0aWxzIiwibW9kZWxEZWYiLCJfZ2V0T3B0aW9uc09iamVjdCIsIm9wdGlvbnMiLCJvcHRpb25zQ291cGxlcyIsInNwbGl0Iiwib3B0cyIsImkiLCJsZW5ndGgiLCJvcHQiLCJfZmlsdGVyUHJvcHMiLCJtb2RlbCIsImVkaXRUeXBlIiwibGV2ZWwiLCJyZXMiLCJwcm9wIiwibWF0Y2giLCJoYXNPd25Qcm9wZXJ0eSIsImlzU3R5bGVQcm9wIiwiX2NhdGVnb3J5IiwicHVzaCIsIl9jb250ZXh0IiwiX3Byb3BJbnB1dCIsInByb3BBY2Nlc3NvciIsIndpZGdldHMiLCJ3aWRnZXQiLCJodG1sIiwiX3dpZGdldCIsIm9uZm9jdXNiaW5kaW5nIiwidyIsInBhcmFtZXRlcnMiLCJwIiwiX29wdGlvbnMiLCJhZGRTbGFzaGVzIiwibWluIiwibWF4IiwiX21heCIsIl9taW4iLCJzdGVwIiwiX2dldEdsb2JhbFN0eWxlUHJvcCIsImdsb2JhbFN0eWxlcyIsInBhdGgiLCJnbG9iYWxTdHlsZVByb3AiLCJfcHJvcEVkaXRvciIsIndpdGhCaW5kaW5nUHJvdmlkZXIiLCJ0ZW1wbGF0ZVVybENvbnZlcnRlciIsInRoZW1lTW9kZWwiLCJiYXNlVGhyZXNob2xkIiwidHJhY2tVc2FnZSIsInJvb3RQcmV2aWV3QmluZGluZyIsInByZXZpZXdCYWNrZ3JvdW5kIiwiX3VzZWNvdW50IiwibG9nIiwiX3RlbXBsYXRlTmFtZSIsInRpdGxlIiwiaWZTdWJzUHJvcCIsImlmU3Vic0d1dHRlciIsImlmU3Vic1RocmVzaG9sZCIsIl9uYW1lIiwidHlwZSIsInByb3BzIiwiaGFzQ3VzdG9tU3R5bGUiLCJjdXN0b21TdHlsZSIsInNlbGVjdGVkSXRlbUJpbmRpbmciLCJhZGRpdGlvbmFsQ2xhc3NlcyIsInByZXZpZXdCRyIsIm5ld1BhdGgiLCJtb2RlbE5hbWUiLCJ0aGVtZVNlY3Rpb25OYW1lIiwiX2hlbHAiLCJfYmxvY2tEZXNjcmlwdGlvbiIsIl9wcmV2aWV3QmluZGluZ3MiLCJ1bmRlZmluZWQiLCJiaW5kIiwidGhpcyIsIm5ld0dsb2JhbFN0eWxlUHJvcCIsImJlZm9yZSIsIm5ld1RoZW1lTW9kZWwiLCJjaGVja2JveGVzIiwiYmluZGluZ3MiLCJqb2luIiwibW9kZWxOYW1lMiIsImNyZWF0ZUJsb2NrRWRpdG9yIiwiZGVmcyIsInRoZW1lVXBkYXRlciIsInJvb3RNb2RlbE5hbWUiLCJ0ZW1wbGF0ZU5hbWUiLCJ0ZW1wbGF0ZUNyZWF0b3IiLCJ0cmFja0dsb2JhbFN0eWxlcyIsImZyb21MZXZlbCIsInJvb3RQcmV2aWV3QmluZGluZ3MiLCJnZXREZWYiLCJyb290TW9kZWwiLCJnZXRCaW5kVmFsdWUiLCJfZ2xvYmFsU3R5bGVzIiwiX2dsb2JhbFN0eWxlIiwicmVwbGFjZSIsImVkaXRvckNvbnRlbnQiLCJjcmVhdGVCbG9ja0VkaXRvcnMiLCJnZW5lcmF0ZUVkaXRvcnMiLCJ0ZW1wbGF0ZURlZiIsImlkeCIsIl9kZWZzIiwiYmxvY2tzIiwiX2Jsb2NrcyIsImJsb2NrRGVmcyIsImNvbnRhaW5lciIsImdlbmVyYXRlTW9kZWwiLCJibG9jayIsInJvb3QiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUVBLElBQUlBLFFBQVVDLFFBQVEsV0FDbEJDLHNCQUF3QkQsUUFBUSxxQkFDaENFLE1BQVFGLFFBQVEsY0FDaEJHLFNBQVdILFFBQVEsY0FFbkJJLGtCQUFvQixTQUFTQyxHQUcvQixJQUZBLElBQUlDLEVBQWlCRCxFQUFRRSxNQUFNLEtBQy9CQyxLQUNLQyxFQUFJLEVBQUdBLEVBQUlILEVBQWVJLE9BQVFELElBQUssQ0FDOUMsSUFBSUUsRUFBTUwsRUFBZUcsR0FBR0YsTUFBTSxLQUNsQ0MsRUFBS0csRUFBSSxJQUFNQSxFQUFJRCxPQUFTLEVBQUlDLEVBQUksR0FBS0EsRUFBSSxHQUUvQyxPQUFPSCxHQU9MSSxhQUFlLFNBQVNDLEVBQU9D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SW9ELGdCQUFrQixTQUFTQyxFQUFhNUUsRUFBU3FCLEVBQXNCMEMsRUFBaUJ4QyxHQUMxRixJQUdJc0QsRUFIQWxCLEVBQU9pQixFQUFZRSxNQUNuQmhCLEVBQWVjLEVBQVlkLGFBQzNCaUIsRUFBU0gsRUFBWUksUUFFckJDLEtBQ0osSUFBS0osRUFBTSxFQUFHQSxFQUFNRSxFQUFPL0YsT0FBUTZGLFNBQ0ksSUFBMUJFLEVBQU9GLEdBQUtLLFdBQ3JCRCxFQUFVckYsS0FBS25CLFNBQVMwRyxjQUFjeEIsRUFBTW9CLEVBQU9GLEdBQUtPLFFBRTFEVixtQkFBbUJmLEVBQU0zRCxPQUFTZ0QsRUFBVzNCLEVBQXNCMEQsRUFBT0YsR0FBS1EsS0FBTU4sRUFBT0YsR0FBS08sTUFBT3JCLEVBQWlCeEMsR0FJM0gsWUFENEIsSUFBakJvQyxFQUFZLE9BQWtCRCxrQkFBa0JDLEVBQU0zRCxPQUFTZ0QsRUFBVzNCLEVBQXNCeUMsRUFBYyxRQUFTLFNBQVVDLE9BQWlCZixHQUFXLEdBQU8sR0FBUSxHQUNoTGlDLEdBR1RLLE9BQU9DLFFBQVVaIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL2NvbnZlcnRlci9lZGl0b3IuanMifQ==",
"\"use strict\";var modelDef=require(\"./model.js\"),wrappedResultModel=function(e){var r=e._defs,t=e.templateName,l=modelDef.getDef(r,t),a=modelDef.generateResultModel(e);return require(\"./wrapper.js\")(a,l,r)},translateTemplate=function(){var e=require(\"./parser.js\");return e.apply(e,arguments)},generateEditors=function(){var e=require(\"./editor.js\");return e.apply(e,arguments)},checkModel=function(){var e=require(\"./checkmodel.js\");return e.apply(e,arguments)};module.exports={translateTemplate:translateTemplate,wrappedResultModel:wrappedResultModel,generateResultModel:modelDef.generateResultModel,generateEditors:generateEditors,checkModel:checkModel};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uanMiXSwibmFtZXMiOlsibW9kZWxEZWYiLCJyZXF1aXJlIiwid3JhcHBlZFJlc3VsdE1vZGVsIiwidGVtcGxhdGVEZWYiLCJkZWZzIiwiX2RlZnMiLCJ0ZW1wbGF0ZU5hbWUiLCJmaW5hbE1vZGVsQ29udGVudERlZiIsImdldERlZiIsImZpbmFsTW9kZWxDb250ZW50IiwiZ2VuZXJhdGVSZXN1bHRNb2RlbCIsIndyYXBwZXIiLCJ0cmFuc2xhdGVUZW1wbGF0ZSIsInR0IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJnZW5lcmF0ZUVkaXRvcnMiLCJnZSIsImNoZWNrTW9kZWwiLCJjbSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLGFBR0EsSUFBSUEsU0FBV0MsUUFBUSxjQUVuQkMsbUJBQXFCLFNBQVNDLEdBQ2hDLElBQUlDLEVBQU9ELEVBQVlFLE1BQ25CQyxFQUFlSCxFQUFZRyxhQUMzQkMsRUFBdUJQLFNBQVNRLE9BQU9KLEVBQU1FLEdBRTdDRyxFQUFvQlQsU0FBU1Usb0JBQW9CUCxHQUtyRCxPQUhjRixRQUFRLGVBQ1pVLENBQVFGLEVBQW1CRixFQUFzQkgsSUFNekRRLGtCQUFvQixXQUN0QixJQUFJQyxFQUFLWixRQUFRLGVBQ2pCLE9BQU9ZLEVBQUdDLE1BQU1ELEVBQUlFLFlBSWxCQyxnQkFBa0IsV0FDcEIsSUFBSUMsRUFBS2hCLFFBQVEsZUFDakIsT0FBT2dCLEVBQUdILE1BQU1HLEVBQUlGLFlBR2xCRyxXQUFhLFdBQ2YsSUFBSUMsRUFBS2xCLFFBQVEsbUJBQ2pCLE9BQU9rQixFQUFHTCxNQUFNSyxFQUFJSixZQUd0QkssT0FBT0MsU0FDTFQsa0JBQW1CQSxrQkFDbkJWLG1CQUFvQkEsbUJBQ3BCUSxvQkFBcUJWLFNBQVNVLG9CQUM5Qk0sZ0JBQWlCQSxnQkFDakJFLFdBQVlBIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL2NvbnZlcnRlci9tYWluLmpzIn0=",
"\"use strict\";var objExtend=require(\"./domutils.js\").objExtend,console=require('console-browserify'),_valueSet=function(e,t,o,l){var r=o.indexOf(\".\");if(-1==r)if(void 0===t[o])console.log(\"Undefined prop \"+o+\" while setting value \"+l+\" in model._valueSet\");else if(null===t[o])\"object\"==typeof l&&null!==l&&void 0===l.push&&console.log(\"nullpropobjectvalue\",o,l),t[o]=l;else if(\"object\"==typeof t[o]&&\"function\"==typeof t[o].push){var n;if(\"string\"==typeof l){var i=l.match(/^\\[(.*)\\]$/);if(null===i)throw\"Unexpected default value for array property \"+o+\": \"+l;n=i[1].split(\",\")}else{if(\"object\"!=typeof l||void 0===l.push)throw\"Unexpected default value for array property \"+o+\": \"+l+\" typeof \"+typeof l;n=l}for(var a=[],d=0;d<n.length;d++)\"@\"==n[d].substr(0,1)?a.push(_generateModel(e,n[d].substr(1))):n[d].length>0&&a.push(n[d]);t[o]=a}else\"string\"==typeof t[o]||\"boolean\"==typeof t[o]?t[o]=l:\"object\"==typeof t[o]&&null!==t[o]&&void 0!==t[o]._widget?(\"object\"==typeof l&&null!==l&&console.log(\"objectvalue\",o,t[o]._widget,l),t[o]=l):console.log(\"setting\",typeof t[o],t[o],o,l);else{var f=o.substr(0,r);_valueSet(e,t[f],o.substr(r+1),l)}},_modelCreateOrUpdateBlockDef=function(e,t,o,l){if(void 0!==e[t]&&e[t]._initialized&&!e[t]._writeable)throw console.log(\"_modelCreateOrUpdateBlockDef\",e,t,o,l),\"Trying to alter non writeable model: \"+t+\" / \"+o;if(void 0===e[t]&&(e[t]={_writeable:!0},void 0===l&&(l={}),void 0===l.category&&void 0===e[t]._category&&(t.match(/(^t|.T)heme$/)||t.match(/(^s|.S)tyle$/)||t.match(/(^c|.C)olor$/)||t.match(/(^r|.R)adius$/)?l.category=\"style\":l.category=\"content\")),void 0!==l){if(void 0!==l.name&&(e[t]._name=l.name),void 0!==l.themeOverride&&(e[t]._themeOverride=l.themeOverride),void 0!==l.globalStyle){e[t]._globalStyle=l.globalStyle;var r=l.globalStyle.replace(/^(\\$theme|_theme_)\\./,\"\"),n=r.indexOf(\".\"),i=-1!=n?r.substr(0,n):r;_modelCreateOrUpdateBlockDef(e,\"theme\",i),(void 0===e[t]._themeOverride||e[t]._themeOverride)&&_modelCreateOrUpdateBlockDef(e,t,\"customStyle=false\")}void 0!==l.contextName&&(e[t]._context=l.contextName,\"block\"==l.contextName&&void 0===e[t]._globalStyle&&(e[t]._globalStyle=\"_theme_.bodyTheme\",_modelCreateOrUpdateBlockDef(e,\"theme\",\"bodyTheme\"),(void 0===e[t]._themeOverride||e[t]._themeOverride)&&_modelCreateOrUpdateBlockDef(e,t,\"customStyle=false\"))),void 0!==l.extend&&(e[t].type=l.extend)}for(var a in l)l.hasOwnProperty(a)&&void 0!==l[a]&&-1==[\"name\",\"extend\",\"contextName\",\"globalStyle\",\"themeOverride\"].indexOf(a)&&(e[t][\"_\"+a]=l[a]);void 0!==o&&o.length>0&&(e[t]._props=void 0!==e[t]._props&&e[t]._props.length>0?e[t]._props+\" \"+o:o)},_removePrefix=function(e){var t=e.match(/^[^A-Z]+([A-Z])(.*)$/);return null!==t?t[1].toLowerCase()+t[2]:null},_generateModelFromDef=function(e,t){var o={};for(var l in e)if(!l.match(/^_.*/)&&e.hasOwnProperty(l)){var r=e[l];if(\"object\"==typeof r&&null!==r&&void 0!==r._complex&&r._complex)o[l]=_generateModelFromDef(r,t);else if(\"type\"==l)o[l]=r;else{if(\"object\"!=typeof r)throw console.error(\"Unexpected model def\",l,r,e),\"Unexpected model def [\"+l+\"]=\"+r;o[l]=null}}if(void 0!==e._defaultValues){var n=e._defaultValues;for(var i in n)n.hasOwnProperty(i)&&_valueSet(t,o,i,n[i])}return o},_generateModel=function(e,t){var o=_getModelDef(e,t,!1,!0);return _generateModelFromDef(o,e)},_getDef=function(e,t){return _getModelDef(e,t,!1,!0)},_getModelDef=function(e,t,o,l){if(void 0===e[t]){if(-1!=t.indexOf(\" \"))return null;var r=_removePrefix(t);return null!==r?_getModelDef(e,r,o,l):null}var n=e[t];if(\"object\"!=typeof n)throw\"Block definition must be an object: found \"+n+\" for \"+t;if(void 0===n._initialized){if(void 0===n.type&&(-1==t.indexOf(\" \")?n.type=t:n.type=t.substr(t.indexOf(\" \")+1)),n.type!=t&&void 0===n._widget){var i=_getModelDef(e,n.type,!0);n=objExtend(i,n),e[t]=n}else void 0===n._widget&&void 0===n._props&&n._complex;n._writeable=!0,n._initialized=!0}if(void 0!==n._props){var a=n._props;if((a=a.split(\" \")).length>0&&void 0===n._writeable)throw console.error(\"Altering a non writable object \",t,a,n),\"Altering a non writable object: \"+t+\" def: \"+a;void 0===n._processedDefs&&(n._processedDefs={}),void 0===n._globalStyles&&(n._globalStyles={}),void 0===n._defaultValues&&(n._defaultValues={});for(var d=0;d<a.length;d++){var f=a[d];if(0!==f.length){var s=f,u=null,c=f.match(/^([^=\\[\\]]+)(\\[\\])?(=?)(.*)$/);if(null!==c&&(f=c[1],\"[]\"==c[2]&&(void 0===n[f]&&(n[f]=[]),u=[]),\"=\"==c[3]&&(u=f.match(/(^v|V)isible$/)?\"true\"==String(c[4]).toLowerCase():f.match(/^customStyle$/)?\"true\"==String(c[4]).toLowerCase():c[4])),null!==u&&void 0===n._defaultValues[f]&&(n._defaultValues[f]=u),void 0===n[f]){var _=_getModelDef(e,t+\" \"+f,!0);null===_&&(_=_getModelDef(e,f,!0)),n[f]=_}n._processedDefs[f]=s,n._complex=!0}}delete n._props}if(o)return n._writeable=!1,objExtend({},n);if(l)return n._writeable=!1,n;if(void 0===n._writeable||!1===n._writeable)throw\"Retrieving non writeable object definition: \"+t;return n},_increaseUseCount=function(e,t){if(e){if(void 0===t._usecount)throw console.error(\"ERROR trying to bind an unused property while readonly\",t),\"ERROR trying to bind an unused property\"}else void 0===t._usecount&&(t._usecount=0),t._usecount++},ensureGlobalStyle=function(e,t,o,l,r,n,i,a){var d=o(n,i,a);if(void 0===e[l]._globalStyles[r]){if(t)throw\"Cannot find _globalStyle for \"+r+\" in \"+l+\"!\";(-1!=r.indexOf(\".\")||\"object\"==typeof e[l][r]&&void 0!==e[l][r]._widget)&&(e[l]._globalStyles[r]=d)}else if(e[l]._globalStyles[r]!=d)throw\"Unexpected conflicting globalStyle [2] for \"+l+\"/\"+r+\": old=\"+e[l]._globalStyles[r]+\" new=\"+d},modelEnsurePathAndGetBindValue=function(e,t,o,l,r,n,i,a,d,f){var s,u,c;if(\"$\"==i.substr(0,1)){console.warn(\"DEPRECATED $ in bindingProvider: \",i,r);var _=i.indexOf(\".\");if(-1==_)throw\"Unexpected fullPath: \"+i+\"/\"+n+\"/\"+r+\"/\"+a+\"/\"+d;if(s=i.substr(1,_-1),c=i.substr(_+1),\"theme\"!=s)throw\"Unexpected $ sequence: \"+s+\" in \"+i;var v=c.indexOf(\".\");u=\"$root.content().theme().\"+(s=c.substr(0,v))+\"().\"+(c=c.substr(v+1)).replace(new RegExp(\"\\\\.\",\"g\"),\"().\")}else if(\"#\"==i.substr(0,1))console.warn(\"DEPRECATED # in bindingProvider: \",i,r),s=l,u=\"$root.content().\"+(c=i.substr(1)).replace(new RegExp(\"\\\\.\",\"g\"),\"().\");else if(\"_theme_.\"==i.substr(0,8)){var p=i.indexOf(\".\",8);u=\"$root.content().theme().\"+(s=i.substr(8,p-8))+\"().\"+(c=i.substr(p+1)).replace(new RegExp(\"\\\\.\",\"g\"),\"().\")}else\"_root_.\"==i.substr(0,7)?(s=l,u=\"$root.content().\"+(c=i.substr(7)).replace(new RegExp(\"\\\\.\",\"g\"),\"().\")):(s=r,c=n+i,u=i.replace(new RegExp(\"\\\\.\",\"g\"),\"().\"));if(void 0===t[s])throw\"Cannot find model def for [\"+s+\"]\";var g,b=c.indexOf(\".\"),h=-1==b?c:c.substr(0,b);if(-1!=s.indexOf(\"-\"))throw console.error(\"ERROR cannot use - for block names\",s),\"ERROR unexpected char in block name: \"+s;if(-1!=h.indexOf(\"-\"))throw console.error(\"ERROR cannot use - for property names\",h),\"ERROR unexpected char in property name: \"+s;if(e)return void 0!==t[s]._globalStyle&&void 0!==t[s][h]&&\"style\"==t[s][h]._category&&(u+=\"._defaultComputed\"),u;if(e){if(void 0!==a)throw\"Cannot use defaultValue in readonly mode!\";if(d)throw\"Cannot use overrideDefault in readonly mode for \"+s+\"/\"+c+\"/\"+d+\"!\";if(void 0!==f)throw\"Cannot set category for \"+s+\"/\"+c+\"/\"+f+\" in readonly mode!\";g=_getModelDef(t,s,!1,!0)}else!1===t[s]._writeable&&console.log(\"TODO debug use cases for this condition\",s,c),g=_getModelDef(t,s,!1===t[s]._writeable);if(null===g)throw\"Unexpected model for [\"+s+\"]\";if(void 0===g[h]){if(e)throw\"Cannot find path \"+h+\" for \"+s+\"!\";_modelCreateOrUpdateBlockDef(t,s,h),g=_getModelDef(t,s,!1)}void 0!==t[s]._globalStyle&&void 0!==t[s][h]&&null!==t[s][h]&&\"style\"==t[s][h]._category&&(u+=\"._defaultComputed\");var y=g;try{if(_increaseUseCount(e,y),-1!=b){var m=c;do{var w=m.substr(0,b);if(void 0===y[w])throw\"Found an unexpected prop \"+w+\" for model \"+s+\" for \"+c;y=y[w],_increaseUseCount(e,y),b=(m=m.substr(b+1)).indexOf(\".\")}while(-1!=b);if(void 0===y[m]||null===y[m])throw\"Found an unexpected path termination \"+m+\" for model \"+s+\" for \"+c;y=y[m]}else y=y[c];if(void 0===y||null===y)throw\"Unexpected null model for \"+s+\"/\"+n+\"/\"+i;void 0!==f&&(y._category=f),_increaseUseCount(e,y)}catch(e){throw console.error(\"TODO ERROR Property lookup exception\",e,s,c,r,i,t),e}if(void 0!==t[s]._globalStyle&&\"object\"==typeof t[s][h]&&null!==t[s][h]&&void 0!==t[s][h]._category&&\"style\"==t[s][h]._category){var x=modelEnsurePathAndGetBindValue.bind(void 0,e,t,o,l,r,\"\"),O=-1!=c.indexOf(\".\")?c.substr(c.indexOf(\".\")):\"\";if(-1!=O.indexOf(\".\",1))throw\"TODO unsupported object nesting! \"+c;var D=t[s]._globalStyle+\".\"+h;\"object\"==typeof t[s][h]&&null!==t[s][h]&&void 0!==t[s][h]._globalStyle&&(D=t[s][h]._globalStyle),ensureGlobalStyle(t,e,x,s,h,D,void 0,!1);var S=D+O;if(void 0===a&&null!==t[s]._defaultValues[c]&&(a=t[s]._defaultValues[c]),ensureGlobalStyle(t,e,x,s,c,S,a,d),void 0!==a){if(e)throw console.error(\"Cannot set a new theme default value\",S.substr(7),a,\"while in readonly mode\"),\"Cannot set a new theme default value (\"+a+\") for \"+S.substr(7)+\" while in readonly mode!\";o(\"default\",S.substr(7),a)}a=null}if(void 0!==a)if(void 0===t[s]._defaultValues[c]||void 0!==d&&d){if(e)throw\"Cannot set new _defaultValues [1] for \"+c+\" in \"+s+\"!\";t[s]._defaultValues[c]=a}else if(null===a){if(e&&null!==t[s]._defaultValues[c])throw\"Cannot set new _defaultValues [2] for \"+c+\" in \"+s+\"!\";t[s]._defaultValues[c]=null}else if(t[s]._defaultValues[c]!=a)throw console.error(\"TODO error!!! Trying to set a new default value for \"+s+\" \"+c+\" while it already exists (current: \"+t[s]._defaultValues[c]+\", new: \"+a+\")\"),\"Trying to set a new default value for \"+s+\" \"+c+\" while it already exists (current: \"+t[s].defaultValues[c]+\", new: \"+a+\")\";return u},generateResultModel=function(e){var t=e._defs,o=e.templateName,l=_generateModel(t,o);return void 0!==t.theme&&(l.theme=_generateModel(t,\"theme\")),l};module.exports={ensurePathAndGetBindValue:modelEnsurePathAndGetBindValue.bind(void 0,!1),getBindValue:modelEnsurePathAndGetBindValue.bind(void 0,!0),generateModel:_generateModel,generateResultModel:generateResultModel,getDef:_getDef,createOrUpdateBlockDef:_modelCreateOrUpdateBlockDef};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVsLmpzIl0sIm5hbWVzIjpbIm9iakV4dGVuZCIsInJlcXVpcmUiLCJjb25zb2xlIiwiX3ZhbHVlU2V0IiwiZGVmcyIsIm1vZGVsIiwicHJvcCIsInZhbHVlIiwiZG90UG9zIiwiaW5kZXhPZiIsImxvZyIsInB1c2giLCJ2YWx1ZXMiLCJ2YWx1ZXNTdHJpbmciLCJtYXRjaCIsInNwbGl0IiwicmVzIiwiaSIsImxlbmd0aCIsInN1YnN0ciIsIl9nZW5lcmF0ZU1vZGVsIiwiX3dpZGdldCIsInByb3BOYW1lIiwiX21vZGVsQ3JlYXRlT3JVcGRhdGVCbG9ja0RlZiIsInRlbXBsYXRlTmFtZSIsInByb3BlcnRpZXMiLCJuYW1lZFByb3BlcnRpZXMiLCJfaW5pdGlhbGl6ZWQiLCJfd3JpdGVhYmxlIiwiY2F0ZWdvcnkiLCJfY2F0ZWdvcnkiLCJuYW1lIiwiX25hbWUiLCJ0aGVtZU92ZXJyaWRlIiwiX3RoZW1lT3ZlcnJpZGUiLCJnbG9iYWxTdHlsZSIsIl9nbG9iYWxTdHlsZSIsImdsb2JhbFN0eWxlU3ViIiwicmVwbGFjZSIsInAiLCJncyIsImNvbnRleHROYW1lIiwiX2NvbnRleHQiLCJleHRlbmQiLCJ0eXBlIiwibnAiLCJoYXNPd25Qcm9wZXJ0eSIsIl9wcm9wcyIsIl9yZW1vdmVQcmVmaXgiLCJzdHIiLCJ0b0xvd2VyQ2FzZSIsIl9nZW5lcmF0ZU1vZGVsRnJvbURlZiIsIm1vZGVsRGVmIiwiX2NvbXBsZXgiLCJlcnJvciIsIl9kZWZhdWx0VmFsdWVzIiwiZGVmYXVsdHMiLCJwcm9wMiIsIl9nZXRNb2RlbERlZiIsIl9nZXREZWYiLCJyZXR1cm5DbG9uZSIsInJlYWRvbmx5IiwiZGVmT2JqIiwidHlwZURlZiIsImRlZiIsIl9wcm9jZXNzZWREZWZzIiwiX2dsb2JhbFN0eWxlcyIsIm9yaWdQcm9wIiwiZGVmVmFsdWUiLCJwcm9wRGVmIiwiU3RyaW5nIiwidmFsIiwiX2luY3JlYXNlVXNlQ291bnQiLCJfdXNlY291bnQiLCJlbnN1cmVHbG9iYWxTdHlsZSIsImdzQmluZGluZ1Byb3ZpZGVyIiwibW9kZWxOYW1lIiwicGF0aCIsImdzRnVsbFBhdGgiLCJkZWZhdWx0VmFsdWUiLCJvdmVycmlkZURlZmF1bHQiLCJnbG9iYWxTdHlsZUJpbmRpbmdCaW5kVmFsdWUiLCJtb2RlbEVuc3VyZVBhdGhBbmRHZXRCaW5kVmFsdWUiLCJ0aGVtZVVwZGF0ZXIiLCJyb290TW9kZWxOYW1lIiwid2l0aGluIiwiZnVsbFBhdGgiLCJzZXRjYXRlZ29yeSIsIndhcm4iLCJwMiIsIlJlZ0V4cCIsInAzIiwicHJvcFBvcyIsImNoaWxkTW9kZWwiLCJteXBhdGgiLCJlIiwiYmluZCIsInVuZGVmaW5lZCIsInN1YlBhdGgiLCJnc1BhdGgiLCJkZWZhdWx0VmFsdWVzIiwiZ2VuZXJhdGVSZXN1bHRNb2RlbCIsInRlbXBsYXRlRGVmIiwiX2RlZnMiLCJmaW5hbE1vZGVsQ29udGVudCIsInRoZW1lIiwibW9kdWxlIiwiZXhwb3J0cyIsImVuc3VyZVBhdGhBbmRHZXRCaW5kVmFsdWUiLCJnZXRCaW5kVmFsdWUiLCJnZW5lcmF0ZU1vZGVsIiwiZ2V0RGVmIiwiY3JlYXRlT3JVcGRhdGVCbG9ja0RlZiJdLCJtYXBwaW5ncyI6IkFBQUEsYUFFQSxJQUFJQSxVQUFZQyxRQUFRLGlCQUFpQkQsVUFDckNFLFFBQVVELFFBQVEsV0FFbEJFLFVBQVksU0FBU0MsRUFBTUMsRUFBT0MsRUFBTUMsR0FDMUMsSUFBSUMsRUFBU0YsRUFBS0csUUFBUSxLQUMxQixJQUFlLEdBQVhELEVBQ0YsUUFBMEIsSUFBZkgsRUFBTUMsR0FDZkosUUFBUVEsSUFBSSxrQkFBb0JKLEVBQU8sd0JBQTBCQyxFQUFRLDRCQUNwRSxHQUFvQixPQUFoQkYsRUFBTUMsR0FDSyxpQkFBVEMsR0FBK0IsT0FBVkEsUUFBdUMsSUFBZEEsRUFBTUksTUFBcUJULFFBQVFRLElBQUksc0JBQXVCSixFQUFNQyxHQUM3SEYsRUFBTUMsR0FBUUMsT0FDVCxHQUEwQixpQkFBZkYsRUFBTUMsSUFBZ0QsbUJBQXBCRCxFQUFNQyxHQUFNSyxL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LEVBQU15RCxFQUFVYyxFQUFtQkMsRUFBV0MsRUFBTUMsRUFBWUMsRUFBY0MsUUFFcEUsSUFBakJELEVBQThCLENBQ3ZDLEdBQUlsQixFQUVGLE1BREEzRCxRQUFRb0QsTUFBTSx1Q0FBd0N3QixFQUFXM0QsT0FBTyxHQUFJNEQsRUFBYywwQkFDcEYseUNBQTJDQSxFQUFlLFNBQVdELEVBQVczRCxPQUFPLEdBQUssMkJBRXBHZ0UsRUFBYSxVQUFXTCxFQUFXM0QsT0FBTyxHQUFJNEQsR0FJaERBLEVBQWUsS0FJakIsUUFBMkIsSUFBaEJBLEVBQ1QsUUFBbUQsSUFBeEMzRSxFQUFLd0UsR0FBV3JCLGVBQWVzQixTQUFtRCxJQUFuQkcsR0FBa0NBLEVBQWtCLENBQzVILEdBQUluQixFQUFVLEtBQU0seUNBQTJDZ0IsRUFBTyxPQUFTRCxFQUFZLElBQzNGeEUsRUFBS3dFLEdBQVdyQixlQUFlc0IsR0FBUUUsT0FFdkMsR0FBcUIsT0FBakJBLEVBQXVCLENBQ3pCLEdBQUlsQixHQUFxRCxPQUF6Q3pELEVBQUt3RSxHQUFXckIsZUFBZXNCLEdBQzdDLEtBQU0seUNBQTJDQSxFQUFPLE9BQVNELEVBQVksSUFHL0V4RSxFQUFLd0UsR0FBV3JCLGVBQWVzQixHQUFRLFVBQ2xDLEdBQUl6RSxFQUFLd0UsR0FBV3JCLGVBQWVzQixJQUFTRSxFQUVqRCxNQURBN0UsUUFBUW9ELE1BQU0sdURBQXlEc0IsRUFBWSxJQUFNQyxFQUFPLHNDQUF3Q3pFLEVBQUt3RSxHQUFXckIsZUFBZXNCLEdBQVEsVUFBWUUsRUFBZSxLQUNwTSx5Q0FBMkNILEVBQVksSUFBTUMsRUFBTyxzQ0FBd0N6RSxFQUFLd0UsR0FBV3dCLGNBQWN2QixHQUFRLFVBQVlFLEVBQWUsSUFLekwsT0FBTy9ELEdBR0xxRixvQkFBc0IsU0FBU0MsR0FDakMsSUFBSWxHLEVBQU9rRyxFQUFZQyxNQUNuQi9FLEVBQWU4RSxFQUFZOUUsYUFFM0JnRixFQUFvQnBGLGVBQWVoQixFQUFNb0IsR0FPN0MsWUFKNkIsSUFBbEJwQixFQUFZLFFBQ3JCb0csRUFBa0JDLE1BQVFyRixlQUFlaEIsRUFBTSxVQUcxQ29HLEdBR1RFLE9BQU9DLFNBRUxDLDBCQUEyQjFCLCtCQUErQmMsVUFBS0MsR0FBVyxHQUUxRVksYUFBYzNCLCtCQUErQmMsVUFBS0MsR0FBVyxHQUM3RGEsY0FBZTFGLGVBQ2ZpRixvQkFBcUJBLG9CQUNyQlUsT0FBUXBELFFBQ1JxRCx1QkFBd0J6RiIsImZpbGUiOiIvaG9tZS9idXJlcy9tb3NhaWNvL3NyYy9qcy9jb252ZXJ0ZXIvbW9kZWwuanMifQ==",
"\"use strict\";var $=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),console=require('console-browserify'),converterUtils=require(\"./utils.js\"),elaborateDeclarations=require(\"./declarations.js\"),processStylesheetRules=require(\"./stylesheet.js\"),modelDef=require(\"./model.js\"),domutils=require(\"./domutils.js\"),wrapElementWithCondition=function(t,e,o){var a=domutils.getAttribute(e,t);try{var i=converterUtils.conditionBinding(a,o);$(e).before(\"\\x3c!-- ko if: \"+i+\" --\\x3e\"),$(e).after(\"\\x3c!-- /ko --\\x3e\"),domutils.removeAttribute(e,t)}catch(o){throw console.warn(\"Model ensure path failed in if/variant\",e,a,t),o}},replacedAttributes=function(t,e){domutils.setAttribute(t,e,domutils.getAttribute(t,\"replaced\"+e))},processStyle=function(t,e,o,a){var i,r=domutils.getAttribute(t,\"replacedstyle\"),l=null;a&&(i={uniqueId:\"$data\",attr:{id:\"id\"}});var d=null!==domutils.getAttribute(t,\"data-ko-display\");null===(l=elaborateDeclarations(r,void 0,e,o,t,i,d))?l=r:domutils.removeAttribute(t,\"replacedstyle\"),null!==l&&(l.trim().length>0?domutils.setAttribute(t,\"style\",l):domutils.removeAttribute(t,\"style\"))},_fixRelativePath=function(t,e,o,a){var i=e(domutils.getAttribute(a,t));null!==i&&domutils.setAttribute(a,t,i)},processBlock=function(t,e,o,a,i,r,l,d,s,c){try{var n;if(\"block\"==r)n=domutils.getAttribute(t,\"data-ko-block\"),domutils.removeAttribute(t,\"data-ko-block\");else{if(\"template\"!=r)throw\"Unexpected context name while processing block: \"+r;n=l}$(\"[data-ko-remove]\",t).remove();for(var u=$(\"[data-ko-block]\",t).replaceWith(\"<replacedblock>\"),m=[\"href\",\"src\",\"data-ko-placeholder-src\",\"background\"],h=0;h<m.length;h++){var p=_fixRelativePath.bind(void 0,m[h],i);$(\"[\"+m[h]+\"]\",t).each(p)}var b=domutils.getAttribute(t,\"data-ko-properties\");null===b&&(b=\"\"),$(\"[data-ko-properties]\",t).each(function(t,e){b.length>0&&(b+=\" \"),b+=domutils.getAttribute(e,\"data-ko-properties\"),domutils.removeAttribute(e,\"data-ko-properties\")}),modelDef.createOrUpdateBlockDef(e,n,b,{contextName:r});var v=modelDef.ensurePathAndGetBindValue.bind(void 0,e,o,l,n,\"\");\"block\"==r&&v(\"id\",\"\"),$(\"style\",t).each(function(t,a){var r=domutils.getInnerHtml(a),d=modelDef.createOrUpdateBlockDef.bind(void 0,e),s=modelDef.ensurePathAndGetBindValue.bind(void 0,e,o,l),u=processStylesheetRules(r,void 0,s,d,o,i,l,n);if(u!=r)if(\"\"!==u.trim()){var m=c(u);domutils.setAttribute(a,\"data-bind\",\"template: { name: '\"+m+\"' }\"),domutils.setContent(a,\"\")}else domutils.removeElements($(a))}),processStyle(t,i,v,s);for(var k=[\"data-ko-display\",\"data-ko-editable\",\"data-ko-wrap\",\"href\"],f=0;f<k.length;f++){if(domutils.getAttribute(t,k[f]))throw console.warn(\"ERROR: Unsupported \"+k[f]+\" used together with data-ko-block\",t),\"ERROR: Unsupported \"+k[f]+\" used together with data-ko-block\"}return $(\"[data-ko-link]\",t).each(function(t,e){var o=domutils.getAttribute(e,\"data-ko-link\"),a=domutils.getAttribute(e,\"replacedstyle\");void 0!==a&&null!==a||(a=\"\"),a=\"\"!==a?\"-ko-attr-href: @\"+o+\"; \"+a:\"-ko-attr-href: @\"+o,domutils.setAttribute(e,\"replacedstyle\",a),domutils.setAttribute(e,\"data-ko-wrap\",o),domutils.removeAttribute(e,\"data-ko-link\")}),$(\"[replacedstyle]\",t).each(function(t,e){processStyle(e,i,v,!1)}),$(\"[replacedhttp-equiv]\",t).each(function(t,e){replacedAttributes(e,\"http-equiv\")}),$(\"[data-ko-display]\",t).each(function(t,e){wrapElementWithCondition(\"data-ko-display\",e,v)}),$(\"[data-ko-editable]\",t).each(function(t,e){var o,a,i,r,l,d,s=domutils.getAttribute(e,\"data-ko-editable\");if(s.lastIndexOf(\".\")>0){var n=s.substr(0,s.lastIndexOf(\".\"));l=v(n)}else l=v(s);if(d=\"wysiwygClick: function(obj, evt) { $root.selectItem(\"+l+\", $data); return false }, clickBubble: false, wysiwygCss: { selecteditem: $root.isSelectedItem(\"+l+\") }, scrollIntoView: $root.isSelectedItem(\"+l+\")\",\"img\"!=domutils.getLowerTagName(e)){a=domutils.getInnerHtml(e);var u=v(s,a,!0,\"wysiwyg\");if(o=\"\",domutils.getAttribute(e,\"id\")||(o+=\"wysiwygId: id()+'_\"+s.replace(\".\",\"_\")+\"', \"),void 0!==d&&(o+=d+\", \"),o+=\"wysiwygOrHtml: \"+u,\"td\"==domutils.getLowerTagName(e)){var m=$('<div data-ko-wrap=\"false\" style=\"width: 100%; height: 100%\"></div>')[0];domutils.setAttribute(m,\"data-bind\",o);var h=domutils.getInnerHtml($(\"<div></div>\").append(m));domutils.setContent(e,h)}else r=(null!==(i=domutils.getAttribute(e,\"data-bind\"))?i+\", \":\"\")+o,domutils.setAttribute(e,\"data-bind\",r),domutils.setContent(e,\"\");domutils.removeAttribute(e,\"data-ko-editable\")}else{var p=domutils.getAttribute(e,\"width\");if(\"\"===p&&(p=null),null===p)throw console.error(\"ERROR: data-ko-editable images must declare a WIDTH attribute!\",e),\"ERROR: data-ko-editable images must declare a WIDTH attribute!\";var b=domutils.getAttribute(e,\"height\");\"\"===b&&(b=null);var k=domutils.getAttribute(e,\"align\"),f=(i=domutils.getAttribute(e,\"data-bind\"))&&i.match(/virtualAttr: {[^}]* height: ([^,}]*)[,}]/);f&&(b=f[1]);var g=i&&i.match(/virtualAttr: {[^}]* width: ([^,}]*)[,}]/);g&&(p=g[1]);var w,A,y=\"\";(a=domutils.getAttribute(e,\"data-ko-placeholder-src\"))?y=domutils.getAttribute(e,\"src\"):a=domutils.getAttribute(e,\"src\"),p&&b?w=p+\"+'x'+\"+b:b?p||(w=\"'h'+\"+b+\"+''\"):w=\"'w'+\"+p+\"+''\";var x=b||domutils.getAttribute(e,\"data-ko-placeholder-height\"),_=p||domutils.getAttribute(e,\"data-ko-placeholder-width\");if(domutils.removeAttribute(e,\"src\"),domutils.removeAttribute(e,\"data-ko-editable\"),domutils.removeAttribute(e,\"data-ko-placeholder-height\"),domutils.removeAttribute(e,\"data-ko-placeholder-width\"),domutils.removeAttribute(e,\"data-ko-placeholder-src\"),a&&(A=\"{ width: \"+_+\", height: \"+x+\", text: \"+w+\"}\"),!_||!x)throw console.error(\"IMG data-ko-editable must declare width and height attributes, or their placeholder counterparts data-ko-placeholder-width/data-ko-placeholder-height\",e),\"ERROR: IMG data-ko-editable MUST declare width and height attributes, or their placeholder counterparts data-ko-placeholder-width/data-ko-placeholder-height\";var D=v(s,y,!1,\"wysiwyg\");o=\"wysiwygSrc: { width: \"+p+\", height: \"+b+\", src: \"+D+\", placeholder: \"+A+\" }\",r=(null!==i?i+\", \":\"\")+o,domutils.setAttribute(e,\"data-bind\",r);var R=c(e),B=\"{ width: \"+p;\"left\"==k?B+=\", float: 'left'\":\"right\"==k?B+=\", float: 'right'\":\"center\"==k?console.log(\"non so cosa fa align=center su una img e quindi non so come simularne l'editing\"):\"top\"==k?B+=\", verticalAlign: 'top'\":\"middle\"==k?B+=\", verticalAlign: 'middle'\":\"bottom\"==k&&(B+=\", verticalAlign: 'bottom'\"),B+=\"}\",$(e).before(\"\\x3c!-- ko wysiwygImg: { _data: $data, _item: \"+l+\", _template: '\"+R+\"', _editTemplate: 'img-wysiwyg', _src: \"+D+\", _width: \"+p+\", _height: \"+b+\", _align: \"+(null===k?void 0:\"'\"+k+\"'\")+\", _size: \"+w+\", _method: \"+void 0+\", _placeholdersrc: \"+A+\", _stylebind: \"+B+\" } --\\x3e\"),$(e).after(\"\\x3c!-- /ko --\\x3e\")}}),$(\"[href]\",t).each(function(t,e){var o=domutils.getAttribute(e,\"href\"),a=\"wysiwygHref: '\"+converterUtils.addSlashes(o)+\"'\",i=domutils.getAttribute(e,\"data-bind\"),r=(null!==i?i+\", \":\"\")+a;domutils.setAttribute(e,\"data-bind\",r)}),$(\"replacedblock\",t).each(function(t,r){var s=u[t],m=processBlock(s,e,o,a,i,\"block\",n,d,!0,c),h=modelDef.ensurePathAndGetBindValue(e,o,l,n,\"\",m);$(r).before(\"\\x3c!-- ko block: { data: \"+converterUtils.addSlashes(h)+\", template: 'block' } --\\x3e\"),$(r).after(\"\\x3c!-- /ko --\\x3e\"),$(r).remove()}),$($(\"[data-ko-wrap]\",t).get().reverse(),t).each(function(t,e){var o=domutils.getAttribute(e,\"data-ko-wrap\");if(void 0===o||\"\"===o||\"true\"===o)throw\"Unsupported empty value for data-ko-wrap: use false value if you want to always remove the tag\";var a,i,r=converterUtils.conditionBinding(o,v),l=domutils.getAttribute(e,\"data-bind\");if(\"\"!==l&&null!==l&&l.match(/(block|wysiwygOrHtml):/)){var d=\"\\x3c!-- ko \"+l+\" --\\x3e\"+domutils.getInnerHtml(e)+\"\\x3c!-- /ko --\\x3e\";a=c(d),domutils.removeAttribute(e,\"data-ko-wrap\"),i=c(e),domutils.replaceHtml(e,\"\\x3c!-- ko template: /* special */ (typeof templateMode != 'undefined' && templateMode == 'wysiwyg') || \"+r+\" ? '\"+i+\"' : '\"+a+\"' --\\x3e\\x3c!-- /ko --\\x3e\")}else a=c(domutils.getInnerHtml(e)),domutils.removeAttribute(e,\"data-ko-wrap\"),domutils.setContent(e,\"\\x3c!-- ko template: '\"+a+\"' --\\x3e\\x3c!-- /ko --\\x3e\"),i=c(e),domutils.replaceHtml(e,\"\\x3c!-- ko template: (typeof templateMode != 'undefined' && templateMode == 'wysiwyg') || \"+r+\" ? '\"+i+\"' : '\"+a+\"' --\\x3e\\x3c!-- /ko --\\x3e\")}),c(t,n,\"show\"),a(l,n,r,d),n}catch(e){throw console.error(\"Exception while parsing the template\",e,t),e}};function conditional_replace(t){return t.replace(/<!--\\[if ([^\\]]*)\\]>((?:(?!--)[\\s\\S])*?)<!\\[endif\\]-->/g,function(t,e,o){var a=\"\\x3c!-- cc:start --\\x3e\";a+=o.replace(/<([A-Za-z:]+)/g,\"\\x3c!-- cc:bo:$1 --\\x3e<cc\").replace(/<\\/([A-Za-z:]+)>/g,\"\\x3c!-- cc:bc:$1 --\\x3e</cc>\\x3c!-- cc:ac:$1 --\\x3e\").replace(/\\/>/g,\"/>\\x3c!-- cc:sc --\\x3e\"),a+=\"\\x3c!-- cc:end --\\x3e\";var i='<replacedcc condition=\"'+e+'\" style=\"display: none\">';return i+=$(\"<div>\").append($(a)).html().replace(/^<!-- cc:start -->/,\"\").replace(/<!-- cc:end -->$/,\"\"),i+=\"</replacedcc>\"})}var translateTemplate=function(t,e,o,a){var i={},r=conditional_replace(e.replace(/(<[^>]+\\s)(style|http-equiv)(=\"[^\"]*\"[^>]*>)/gi,function(t,e,o,a){return e+\"replaced\"+o+a})),l=$(r),d=l[0],s=[],c=function(t,e,o,a){s.push({root:t,block:e,context:o,container:a})},n=function(t,e,o){if(void 0===i.themes&&(i.themes={}),void 0===i.themes[t]&&(i.themes[t]={}),void 0===i.themes[t][e]||null===i.themes[t][e])i.themes[t][e]=o;else if(void 0!==o&&null!==o){var a=i.themes[t][e];a!=o&&console.log(\"Error setting a new default for property \"+e+\" in theme \"+t+\". old:\"+a+\" new:\"+o+\"!\")}},u={};$(\"[data-ko-container]\",l).each(function(t,e){var o=domutils.getAttribute(e,\"data-ko-container\")+\"Blocks\";domutils.removeAttribute(e,\"data-ko-container\"),domutils.setAttribute(e,\"data-bind\",\"block: \"+o);var a=$(\"> [data-ko-block]\",e);domutils.removeElements(a,!0),u[o]=a}),modelDef.createOrUpdateBlockDef(i,\"id\"),modelDef.createOrUpdateBlockDef(i,\"bodyTheme\"),modelDef.createOrUpdateBlockDef(i,\"blocks\",\"blocks[]\"),modelDef.createOrUpdateBlockDef(i,\"text\"),processBlock(d,i,n,c,o,\"template\",t,void 0,!1,a);var m=function(e,r,l){processBlock(l,i,n,c,o,\"block\",t,e,!0,a)};for(var h in u)if(u.hasOwnProperty(h)){var p=u[h],b=h;modelDef.ensurePathAndGetBindValue(i,n,t,t,\"\",b+\".blocks\",\"[]\"),p.each(m.bind(void 0,b))}var v={_defs:i,templateName:t,_blocks:s};return void 0!==i[t]._version&&(v.version=i[t]._version),v};module.exports=translateTemplate;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5qcyJdLCJuYW1lcyI6WyIkIiwicmVxdWlyZSIsImNvbnNvbGUiLCJjb252ZXJ0ZXJVdGlscyIsImVsYWJvcmF0ZURlY2xhcmF0aW9ucyIsInByb2Nlc3NTdHlsZXNoZWV0UnVsZXMiLCJtb2RlbERlZiIsImRvbXV0aWxzIiwid3JhcEVsZW1lbnRXaXRoQ29uZGl0aW9uIiwiYXR0cmlidXRlIiwiZWxlbWVudCIsImJpbmRpbmdQcm92aWRlciIsImNvbmQiLCJnZXRBdHRyaWJ1dGUiLCJiaW5kaW5nIiwiY29uZGl0aW9uQmluZGluZyIsImJlZm9yZSIsImFmdGVyIiwicmVtb3ZlQXR0cmlidXRlIiwiZSIsIndhcm4iLCJyZXBsYWNlZEF0dHJpYnV0ZXMiLCJhdHRyaWJ1dGVOYW1lIiwic2V0QXR0cmlidXRlIiwicHJvY2Vzc1N0eWxlIiwidGVtcGxhdGVVcmxDb252ZXJ0ZXIiLCJhZGRVbmlxdWVJZCIsIm5ld0JpbmRpbmdzIiwic3R5bGUiLCJuZXdTdHlsZSIsInVuaXF1ZUlkIiwiYXR0ciIsImlkIiwicmVtb3ZlRGlzcGxheU5vbmUiLCJ1bmRlZmluZWQiLCJ0cmltIiwibGVuZ3RoIiwiX2ZpeFJlbGF0aXZlUGF0aCIsImluZGV4IiwibmV3VXJsIiwicHJvY2Vzc0Jsb2NrIiwiZGVmcyIsInRoZW1lVXBkYXRlciIsImJsb2NrUHVzaGVyIiwiY29udGV4dE5hbWUiLCJyb290TW9kZWxOYW1lIiwiY29udGFpbmVyTmFtZSIsImdlbmVyYXRlVW5pcXVlSWQiLCJ0ZW1wbGF0ZUNyZWF0b3IiLCJ0ZW1wbGF0ZU5hbWUiLCJyZW1vdmUiLCJmaXhlZEJsb2NrcyIsInJlcGxhY2VXaXRoIiwidXJsYXR0cnMiLCJpIiwiZnVuYyIsImJpbmQiLCJlYWNoIiwiZGF0YURlZnMiLCJjcmVhdGVPclVwZGF0ZUJsb2NrRGVmIiwiZW5zdXJlUGF0aEFuZEdldEJpbmRWYWx1ZSIsImdldElubmVySHRtbCIsImJsb2NrRGVmc1VwZGF0ZXIiLCJsb2NhbFdpdGhCaW5kaW5nUHJvdmlkZXIiLCJ0bXBOYW1lIiwic2V0Q29udGVudCIsInJlbW92ZUVsZW1lbnRzIiwibm90c3VwcG9ydGVkIiwiaiIsInVybFZhciIsInJlcFN0eWxlIiwibmV3QmluZGluZyIsImRlZmF1bHRWYWx1ZSIsImN1cnJlbnRCaW5kaW5ncyIsImRhdGFCaW5kIiwiaXRlbUJpbmRWYWx1ZSIsInNlbGVjdEJpbmRpbmciLCJkYXRhRWRpdGFibGUiLCJsYXN0SW5kZXhPZiIsInN1YnMiLCJzdWJzdHIiLCJnZXRMb3dlclRhZ05hbWUiLCJtb2RlbEJpbmRWYWx1ZSIsInJlcGxhY2UiLCJ3cmFwcGluZ0RpdiIsIm5ld0NvbnRlbnQiLCJhcHBlbmQiLCJ3aWR0aCIsImVycm9yIiwiaGVpZ2h0IiwiYWxpZ24iLCJkeW5IZWlnaHQiLCJtYXRjaCIsImR5bldpZHRoIiwic2l6ZSIsInBsYWNlaG9sZGVyc3JjIiwidmFsdWUiLCJwbGhlaWdodCIsInBsd2lkdGgiLCJiaW5kaW5nVmFsdWUiLCJ0bXBsTmFtZSIsImNvbnRhaW5lckJpbmQiLCJsb2ciLCJtZXRob2QiLCJhdHRyVmFsdWUiLCJhZGRTbGFzaGVzIiwiYmxvY2tFbGVtZW50IiwiYmxvY2tOYW1lIiwiZ2V0IiwicmV2ZXJzZSIsImlubmVyVG1wbE5hbWUiLCJvdXRlclRtcGxOYW1lIiwiY29uZEJpbmRpbmciLCJpbm5lclRtcGxDb250ZW50IiwicmVwbGFjZUh0bWwiLCJjb25kaXRpb25hbF9yZXBsYWNlIiwiaHRtbCIsImNvbmRpdGlvbiIsImJvZHkiLCJkZCIsIm91dHB1dCIsInRyYW5zbGF0ZVRlbXBsYXRlIiwicmVwbGFjZWRIdG1sIiwicDEiLCJwMiIsInAzIiwiY29udGVudCIsImJsb2NrcyIsIl9ibG9ja1B1c2hlciIsInJvb3ROYW1lIiwicHVzaCIsInJvb3QiLCJibG9jayIsImNvbnRleHQiLCJjb250YWluZXIiLCJuYW1lIiwia2V5IiwidmFsIiwicHJlY1ZhbCIsImNvbnRhaW5lcnNEb20iLCJjb250YWluZXJCbG9ja3MiLCJibG9ja1Byb2Nlc3MiLCJwcm9wIiwiaGFzT3duUHJvcGVydHkiLCJ0ZW1wbGF0ZURlZiIsIl9kZWZzIiwiX2Jsb2NrcyIsIl92ZXJzaW9uIiwidmVyc2lvbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLGFBR0EsSUFBSUEsRUFBSUMsUUFBUSxVQUNaQyxRQUFVRCxRQUFRLFdBQ2xCRSxlQUFpQkYsUUFBUSxjQUN6Qkcsc0JBQXdCSCxRQUFRLHFCQUNoQ0ksdUJBQXlCSixRQUFRLG1CQUNqQ0ssU0FBV0wsUUFBUSxjQUNuQk0sU0FBV04sUUFBUSxpQkFFbkJPLHlCQUEyQixTQUFTQyxFQUFXQyxFQUFTQyxHQUMxRCxJQUFJQyxFQUFPTCxTQUFTTSxhQUFhSCxFQUFTRCxHQUUxQyxJQUNFLElBQUlLLEVBQVVYLGVBQWVZLGlCQUFpQkgsRUFBTUQsR0FDcERYLEVBQUVVLEdBQVNNLE9BQU8sa0JBQWlCRixFQUFVLFdBQzdDZCxFQUFFVSxHQUFTTyxNQUFNLHNCQUNqQlYsU0FBU1csZ0JBQWdCUixFQUFTRCxHQUNsQyxNQUFPVSxHQUVQLE1BREFqQixRQUFRa0IsS0FBSyx5Q0FBMENWLEVBQVNFLEVBQU1ILEdBQ2hFVSxJQUtORSxtQkFBcUIsU0FBU1gsRUFBU1ksR0FDekNmLFNBQVNnQixhQUFhYixFQUFTWSxFQUFlZixTQUFTTSxhQUFhSCxFQUFTLFdBQWFZLEtBR3hGRSxhQUFlLFNBQVNkLEVBQVNlLEVBQXNCZCxFQUFpQmUsR0FDMUUsSUFFSUMsRUFGQUMsRUFBUXJCLFNBQVNNLGFBQWFILEVBQVMsaUJBQ3ZDbUIsRUFBVyxLQUVYSCxJQUFhQyxHQUNmRyxTQUFVLFFBQ1ZDLE1BQ0VDLEdBQUksUUFJUixJQUFJQyxFQUEwRSxPQUF0RDFCLFNBQVNNLGFBQWFILEVBQVMsbUJBS3RDLFFBSGpCbUIsRUFBV3pCLHNCQUFzQndCLE9BQU9NLEVBQVdULEVBQXNCZCxFQUFpQkQsRUFBU2lCLEVBQWFNLElBSTlHSixFQUFXRCxFQU1YckIsU0FBU1csZ0JBQWdCUixFQUFTLGlCQUduQixPQUFibUIs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",
"\"use strict\";var cssParse=require(\"mensch/lib/parser.js\"),console=require('console-browserify'),converterUtils=require(\"./utils.js\"),elaborateDeclarations=require(\"./declarations.js\"),_processStyleSheetRules_processBlockDef=function(e,t){for(var o,s,r,l=0;l<t.length;l++)if(\"rule\"==t[l].type){for(var n=t[l].selectors,a=!1,i=!1,c=0;c<n.length;c++)n[c].match(/:preview$/)?i=!0:a=!0;if(i&&a)throw console.log(\"cannot mix selectors type (:preview and declarations) in @supports -ko-blockdefs \",n),\"Cannot mix selectors type (:preview and declarations) in @supports -ko-blockdefs\";if(!i&&!a)throw console.log(\"cannot find known selectors in @supports -ko-blockdefs \",n),\"Cannot find known selectors in @supports -ko-blockdefs\";if(a){o=\"\",s={},r=t[l].declarations;for(var p=0;p<r.length;p++)\"property\"==r[p].type&&(\"label\"==r[p].name?s.name=r[p].value:\"context\"==r[p].name?s.contextName=r[p].value:\"properties\"==r[p].name?o=r[p].value:\"theme\"==r[p].name?s.globalStyle=\"_theme_.\"+r[p].value:\"themeOverride\"==r[p].name?s.themeOverride=\"true\"==String(r[p].value).toLowerCase():s[r[p].name]=r[p].value);for(var u=0;u<n.length;u++)e(n[u],o,s)}if(i)for(var d=0;d<n.length;d++){e(n[d].substr(0,n[d].indexOf(\":\")),void 0,{previewBindings:t[l].declarations})}}},processStylesheetRules=function(e,t,o,s,r,l,n,a){var i,c=e,p=null;if(void 0===t){var u=cssParse(e,{comments:!0,position:!0});if(\"stylesheet\"!=u.type||void 0===u.stylesheet)throw console.log(\"unable to process styleSheet\",u),\"Unable to parse stylesheet\";t=u.stylesheet.rules}for(var d=t.length-1;d>=0;d--){if(\"supports\"==t[d].type&&\"-ko-blockdefs\"==t[d].name)_processStyleSheetRules_processBlockDef(s,t[d].rules),c=converterUtils.removeStyle(c,t[d].position.start,p,0,0,0,\"\");else if(\"media\"==t[d].type||\"supports\"==t[d].type)c=processStylesheetRules(c,t[d].rules,o,s,r,l,n,a);else if(\"comment\"==t[d].type);else if(\"rule\"==t[d].type){for(var v=t[d].selectors,f=\"\",h=null,y=0;y<v.length;y++){f.length>0&&(f+=\", \");var m=v[y].match(/\\[data-ko-block=([^ ]*)\\]/);if(null!==m){if(null!==h&&h!=m[1])throw\"Found multiple block-match attribute selectors: cannot translate it (\"+h+\" vs \"+m[1]+\")\";h=m[1]}f+=\"\\x3c!-- ko text: templateMode =='wysiwyg' ? '#main-wysiwyg-area ' : '' --\\x3e\\x3c!-- /ko --\\x3e\"+v[y]}if(h){var k=\"\\x3c!-- ko foreach: $root.findObjectsOfType($data, '\"+h+\"') --\\x3e\",x=p,g=\" \";t[d].declarations.length>0&&(t[d].declarations[0].position.start.line!=t[d].position.end.line&&(g=\"\\n\"+new Array(t[d].position.start.col).join(\" \")),x=t[d].declarations[t[d].declarations.length-1].position.end),null===x?c+=g+\"\\x3c!-- /ko --\\x3e\":c=x==p?converterUtils.removeStyle(c,x,p,0,0,0,g+\"\\x3c!-- /ko --\\x3e\"):converterUtils.removeStyle(c,x,p,0,0,0,g+\"}\"+g+\"\\x3c!-- /ko --\\x3e\"),f=k+g+f.replace(new RegExp(\"\\\\[data-ko-block=\"+h+\"\\\\]\",\"g\"),\"\\x3c!-- ko text: '#'+id() --\\x3e\"+h+\"\\x3c!-- /ko --\\x3e\"),s(h,\"\",{contextName:\"block\"})}var b=h||a;i=o.bind(this,b,\"\");var w=elaborateDeclarations(c,t[d].declarations,l,i);null!==w&&(c=w),c=converterUtils.removeStyle(c,t[d].position.start,t[d].position.end,0,0,0,f)}else console.log(\"Unknown rule type\",t[d].type,\"while parsing <style> rules\");p=t[d].position.start}return c};module.exports=processStylesheetRules;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlc2hlZXQuanMiXSwibmFtZXMiOlsiY3NzUGFyc2UiLCJyZXF1aXJlIiwiY29uc29sZSIsImNvbnZlcnRlclV0aWxzIiwiZWxhYm9yYXRlRGVjbGFyYXRpb25zIiwiX3Byb2Nlc3NTdHlsZVNoZWV0UnVsZXNfcHJvY2Vzc0Jsb2NrRGVmIiwiYmxvY2tEZWZzVXBkYXRlciIsInJ1bGVzIiwicHJvcGVydGllcyIsIm5hbWVkUHJvcHMiLCJkZWNscyIsImkiLCJsZW5ndGgiLCJ0eXBlIiwic2VscyIsInNlbGVjdG9ycyIsImhhc0RlY2xhcmF0aW9ucyIsImhhc1ByZXZpZXdzIiwiaiIsIm1hdGNoIiwibG9nIiwiZGVjbGFyYXRpb25zIiwiayIsIm5hbWUiLCJ2YWx1ZSIsImNvbnRleHROYW1lIiwiZ2xvYmFsU3R5bGUiLCJ0aGVtZU92ZXJyaWRlIiwiU3RyaW5nIiwidG9Mb3dlckNhc2UiLCJsIiwibSIsInN1YnN0ciIsImluZGV4T2YiLCJ1bmRlZmluZWQiLCJwcmV2aWV3QmluZGluZ3MiLCJwcm9jZXNzU3R5bGVzaGVldFJ1bGVzIiwic3R5bGUiLCJsb2NhbFdpdGhCaW5kaW5nUHJvdmlkZXIiLCJ0aGVtZVVwZGF0ZXIiLCJ0ZW1wbGF0ZVVybENvbnZlcnRlciIsInJvb3RNb2RlbE5hbWUiLCJ0ZW1wbGF0ZU5hbWUiLCJiaW5kaW5nUHJvdmlkZXIiLCJuZXdTdHlsZSIsImxhc3RTdGFydCIsInN0eWxlU2hlZXQiLCJjb21tZW50cyIsInBvc2l0aW9uIiwic3R5bGVzaGVldCIsInJlbW92ZVN0eWxlIiwic3RhcnQiLCJuZXdTZWwiLCJmb3VuZEJsb2NrTWF0Y2giLCJsb29wUHJlZml4IiwiZW5kIiwic3BhY2luZyIsImxpbmUiLCJBcnJheSIsImNvbCIsImpvaW4iLCJyZXBsYWNlIiwiUmVnRXhwIiwibG9jYWxCbG9ja05hbWUiLCJiaW5kIiwidGhpcyIsImVsYWJvcmF0ZWRTdHlsZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFB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VyxFQUFHLEVBQUcsRUFBR1csRUFBVSxJQUFNQSxFQVg1RSxzQkFZbEJKLEVBQVNFLEVBQWFFLEVBQVVKLEVBQU9TLFFBQVEsSUFBSUMsT0FBTyxvQkFBc0JULEVBQWtCLE1BQU8sS0FBTSxtQ0FBaUNBLEVBQWtCLHNCQUVsSy9DLEVBQWlCK0MsRUFBaUIsSUFBTTVCLFlBQWEsVUFJdkQsSUFBSXNDLEVBQWlCVixHQUFvQ1gsRUFDekRDLEVBQWtCTCxFQUF5QjBCLEtBQUtDLEtBQU1GLEVBQWdCLElBQ3RFLElBQUlHLEVBQWtCOUQsc0JBQXNCd0MsRUFBVXJDLEVBQU1JLEdBQUdVLGFBQWNtQixFQUFzQkcsR0FDM0UsT0FBcEJ1QixJQUEwQnRCLEVBQVdzQixHQUV6Q3RCLEVBQVd6QyxlQUFlK0MsWUFBWU4sRUFBVXJDLEVBQU1JLEdBQUdxQyxTQUFTRyxNQUFPNUMsRUFBTUksR0FBR3FDLFNBQVNPLElBQUssRUFBRyxFQUFHLEVBQUdILFFBRXpHbEQsUUFBUWtCLElBQUksb0JBQXFCYixFQUFNSSxHQUFHRSxLQUFNLCtCQUVsRGdDLEVBQVl0QyxFQUFNSSxHQUFHcUMsU0FBU0csTUFFaEMsT0FBT1AsR0FHVHVCLE9BQU9DLFFBQVVoQyIsImZpbGUiOiIvaG9tZS9idXJlcy9tb3NhaWNvL3NyYy9qcy9jb252ZXJ0ZXIvc3R5bGVzaGVldC5qcyJ9",
"\"use strict\";var console=require('console-browserify'),jsep=require(\"jsep\");jsep.addBinaryOp(\"or\",1),jsep.addBinaryOp(\"and\",2),jsep.addBinaryOp(\"eq\",6),jsep.addBinaryOp(\"neq\",6),jsep.addBinaryOp(\"lt\",7),jsep.addBinaryOp(\"lte\",7),jsep.addBinaryOp(\"gt\",7),jsep.addBinaryOp(\"gte\",7);var addSlashes=function(e){return e.replace(/[\\\\\"']/g,\"\\\\$&\").replace(/\\u0000/g,\"\\\\0\")},removeStyle=function(e,r,n,t,o,i,a){for(var s=e.split(\"\\n\"),p=o,l=i,u=1+t;u<r.line;u++)p+=s[u-1-t].length+1;if(p+=r.col,null!==n){for(var d=1+t;d<n.line;d++)l+=s[d-1-t].length+1;l+=n.col}else l+=e.length+1;return e.substr(0,p-1)+a+e.substr(l-1)},expressionGenerator=function(e,r,n){return function e(r,n,t,o){if(void 0===t&&(t=!0),void 0!==o&&\"Identifier\"!==r.type&&\"MemberExpression\"!==r.type&&console.log(\"Cannot apply default value to variable when using expressions\"),\"BinaryExpression\"===r.type||\"LogicalExpression\"===r.type)return\"(\"+e(r.left,n,t)+\" \"+function(e){switch(e){case\"or\":return\"||\";case\"and\":return\"&&\";case\"lt\":return\"<\";case\"lte\":return\"<=\";case\"gt\":return\">\";case\"gte\":return\">=\";case\"eq\":return\"==\";case\"neq\":return\"!=\";default:return e}}(r.operator)+\" \"+e(r.right,n,t)+\")\";if(\"CallExpression\"===r.type){var i=r.arguments.map(function(r){return e(r,n,t)});return e(r.callee,n,t)+\"(\"+i.join(\", \")+\")\"}if(\"UnaryExpression\"===r.type)return r.operator+e(r.argument,n,t);if(\"MemberExpression\"==r.type&&r.computed)throw\"Unexpected computed member expression\";if(\"MemberExpression\"!=r.type||r.computed){if(\"Literal\"===r.type)return r.raw;if(\"Identifier\"===r.type){var a=r.name;return t?n(a,o)+\"()\":a}if(\"ConditionalExpression\"===r.type)return\"(\"+e(r.test,n,t)+\" ? \"+e(r.consequent,n,t)+\" : \"+e(r.alternate,n,t)+\")\";throw\"Compound\"===r.type?\"Syntax error in expression: operator expected after \"+e(r.body[0],n,!1):\"Found an unsupported expression type: \"+r.type}var s=e(r.object,n,!1)+\".\"+e(r.property,n,!1);return t&&\"Math\"!==r.object.name&&\"Color\"!==r.object.name&&\"Util\"!==r.object.name?n(s,o)+\"()\":s}(e,r,void 0,n)},expressionBinding=function(e,r,n){var t;if(void 0!==n&&null!==n){var o=e.trim().replace(/@\\[([^\\]]+)\\]|@([a-zA-Z0-9\\._]+)\\b/g,\"###var###\");if(\"###var###\"==(o=o.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\")))t=[null,n];else if(o=\"^\"+o.replace(/###var###/g,\"(.+)\")+\"$\",!(t=n.trim().match(new RegExp(o))))throw console.log(\"Cannot find matches\",t,\"for\",n,e,o,e),\"Cannot find default value for \"+e+\" in \"+n}try{var i=0,a=\"'\"+e.replace(/@\\[([^\\]]+)\\]|@([a-zA-Z0-9\\._]+)\\b|(')/g,function(e,n,o,a){if(a)return\"\\\\\"+a;i++;var s,p=n||o;if(t&&(void 0!==t[i]?s=t[i].trim():console.log(\"ABZZZ Cannot find default value for\",p,\"in\",t,\"as\",i)),n){var l=jsep(n);return\"'+\"+expressionGenerator(l,r,s)+\"+'\"}return\"'+\"+r(p,s)+\"()+'\"})+\"'\";return a=a.replace(/(^|[^\\\\])''\\+/g,\"$1\").replace(/\\+''/g,\"\"),0===i&&\"false\"!==a&&\"true\"!==a&&console.error(\"Unexpected expression with no valid @variable references\",e),a}catch(r){throw\"Exception parsing expression \"+e+\" \"+r}},conditionBinding=function(e,r){var n=jsep(e);return expressionGenerator(n,r)};module.exports={addSlashes:addSlashes,removeStyle:removeStyle,conditionBinding:conditionBinding,expressionBinding:expressionBinding};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLmpzIl0sIm5hbWVzIjpbImNvbnNvbGUiLCJyZXF1aXJlIiwianNlcCIsImFkZEJpbmFyeU9wIiwiYWRkU2xhc2hlcyIsInN0ciIsInJlcGxhY2UiLCJyZW1vdmVTdHlsZSIsInN0eWxlIiwic3RhcnRQb3MiLCJlbmRQb3MiLCJza2lwUm93cyIsInN0YXJ0T2Zmc2V0IiwiZW5kT2Zmc2V0IiwiaW5zZXJ0Iiwic3R5bGVSb3dzIiwic3BsaXQiLCJzdGFydCIsImVuZCIsInIiLCJsaW5lIiwibGVuZ3RoIiwiY29sIiwicjIiLCJzdWJzdHIiLCJleHByZXNzaW9uR2VuZXJhdG9yIiwibm9kZSIsImJpbmRpbmdQcm92aWRlciIsImRlZlZhbCIsImdlbiIsImxvb2t1cG1lbWJlciIsInR5cGUiLCJsb2ciLCJsZWZ0Iiwib3AiLCJtYXBPcGVyYXRvciIsIm9wZXJhdG9yIiwicmlnaHQiLCJhcmdzIiwiYXJndW1lbnRzIiwibWFwIiwibiIsImNhbGxlZSIsImpvaW4iLCJhcmd1bWVudCIsImNvbXB1dGVkIiwicmF3IiwiaWQiLCJuYW1lIiwidGVzdCIsImNvbnNlcXVlbnQiLCJhbHRlcm5hdGUiLCJib2R5IiwibWUiLCJvYmplY3QiLCJwcm9wZXJ0eSIsInVuZGVmaW5lZCIsImV4cHJlc3Npb25CaW5kaW5nIiwiZXhwcmVzc2lvbiIsImRlZmF1bHRWYWx1ZSIsIm1hdGNoZXMiLCJjaGVjayIsInRyaW0iLCJtYXRjaCIsIlJlZ0V4cCIsInZhcnMiLCJyZXN1bHQiLCJwMSIsInAyIiwicDMiLCJ2YXJOYW1lIiwicGFyc2V0cmVlIiwiZXJyb3IiLCJlIiwiY29uZGl0aW9uQmluZGluZyIsImNvbmRpdGlvbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLGFBQ0EsSUFBSUEsUUFBVUMsUUFBUSxXQUNsQkMsS0FBT0QsUUFBUSxRQUVuQkMsS0FBS0MsWUFBWSxLQUFNLEdBQ3ZCRCxLQUFLQyxZQUFZLE1BQU8sR0FDeEJELEtBQUtDLFlBQVks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RCxRQUFRZ0MsSUFBSSxzQ0FBdUNzQyxFQUFTLEtBQU1WLEVBQVMsS0FBTUssSUFJakZFLEVBQUksQ0FDTixJQUFJSSxFQUFZckUsS0FBS2lFLEdBRXJCLE1BQU8sS0FETzFDLG9CQUFvQjhDLEVBQVc1QyxFQUFpQkMsR0FDdEMsS0FFMUIsTUFBTyxLQUFPRCxFQUFnQjJDLEVBQVMxQyxHQUFVLFNBQzlDLElBTUwsT0FMQXNDLEVBQVNBLEVBQU81RCxRQUFRLGlCQUFrQixNQUFNQSxRQUFRLFFBQVMsSUFFcEQsSUFBVDJELEdBQXlCLFVBQVhDLEdBQWlDLFNBQVhBLEdBQ3RDbEUsUUFBUXdFLE1BQU0sMkRBQTREZCxHQUVyRVEsRUFDUCxNQUFPTyxHQUNQLEtBQU0sZ0NBQWtDZixFQUFhLElBQU1lLElBSTNEQyxpQkFBbUIsU0FBU0MsRUFBV2hELEdBQ3pDLElBQUk0QyxFQUFZckUsS0FBS3lFLEdBRXJCLE9BRGNsRCxvQkFBb0I4QyxFQUFXNUMsSUFJL0NpRCxPQUFPQyxTQUNMekUsV0FBWUEsV0FDWkcsWUFBYUEsWUFDYm1FLGlCQUFrQkEsaUJBQ2xCakIsa0JBQW1CQSIsImZpbGUiOiIvaG9tZS9idXJlcy9tb3NhaWNvL3NyYy9qcy9jb252ZXJ0ZXIvdXRpbHMuanMifQ==",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),console=require('console-browserify');function wrap(e){var t=typeof e;if(\"object\"===t&&(e?e.constructor==Date?t=\"date\":\"[object Array]\"==Object.prototype.toString.call(e)&&(t=\"array\"):t=\"null\"),\"array\"==t){var n=ko.observableArray();if(!e||0===e.length)return n;for(var o=0,r=e.length;o<r;++o)n.push(wrap(e[o]));return n}if(\"object\"==t){var a={};for(var i in e){var l=e[i];a[i]=wrap(l)}return ko.observable(a)}if(\"function\"==t)return e;var s=ko.observable();return s(e),s}var _getOptionsObject=function(e){for(var t=e.split(\"|\"),n={},o=0;o<t.length;o++){var r=t[o].split(\"=\");n[r[0]]=r.length>1?r[1]:r[0]}return n},_makeComputed=function(e,t,n,o,r,a){return ko.computed({read:function(){var n=e();if(null===n){var i=ko.utils.unwrapObservable(o);return void 0===i||\"custom\"==i?ko.utils.unwrapObservable(t):a[i][r]}return n},write:function(i){var l,s=ko.utils.unwrapObservable(o);if(l=void 0===s||\"custom\"==s?ko.utils.peekObservable(t):a[s][r],n)e(i==l?null:i);else{var u=ko.utils.peekObservable(e);i==l&&null===u||e(i)}}})},_nextVariantFunction=function(e,t,n){for(var o=e.utils.unwrapObservable(t),r=0;r<n.length&&e.utils.peekObservable(n[r])!=o;r++);r==n.length&&(console.warn(\"Didn't find a variant!\",t,o,n),r=n.length-1);var a=r+1;a==n.length&&(a=0),t(e.utils.peekObservable(n[a]))},_getVariants=function(e){var t=e._variant;if(\"object\"!=typeof e[t]||void 0===e[t]._widget||\"string\"!=typeof e[t]._options&&\"boolean\"!==e[t]._widget)throw console.error(\"Unexpected variant declaration\",t,e[t]),\"Unexpected variant declaration: cannot find property \"+t+\" or its _options string and it is not a boolean\";return\"string\"==typeof e[t]._options?Object.keys(_getOptionsObject(e[t]._options)):[!0,!1]},_makeComputedFunction=function(e,t,n,o,r,a,i){if(void 0===e){if(void 0===o.utils.unwrapObservable(i).type)throw console.log(\"TODO ERROR Found a non-typed def \",e,i),\"Found a non-typed def \"+e;var l=o.utils.unwrapObservable(o.utils.unwrapObservable(i).type);\"object\"!=typeof(e=t[l])&&console.log(\"TODO ERROR Found a non-object def \",e,\"for\",l)}void 0===r&&void 0!==a&&a&&(r=i);var s=\"$root.content().\",u=e._globalStyles;if(void 0!==u)for(var p in u)if(u.hasOwnProperty(p)){var b,c,v,d=\"$root.content().theme().scheme\";if(u[p].substr(0,s.length)!=s)throw\"UNEXPECTED globalStyle path (\"+u[p]+\") outside selfPath (\"+s+\")\";v=u[p].substr(s.length),c=r,d.substr(0,s.length)==s?b=d.substr(s.length):(console.log(\"IS THIS CORRECT?\",d,s),b=d);for(var f=c,h=v.split(\"().\"),_=\"\",k=!0,g=0;g<h.length;g++)c=o.utils.unwrapObservable(c)[h[g]],k?\"theme\"==h[g]&&(k=!1):(_.length>0&&(_+=\".\"),_+=h[g]);for(var m=b.split(\"().\"),w=0;w<m.length;w++)f=o.utils.unwrapObservable(f)[m[w]];for(var O=p.split(\".\"),y=i,R=0;R<O.length;R++)y=o.utils.unwrapObservable(y)[O[R]];if(!o.isObservable(y))throw\"Unexpected non observable target \"+p+\"/\"+_;y._defaultComputed=_makeComputed(y,c,!0,f,_,n)}if(void 0!==e._variant){for(var j=e._variant.split(\".\"),F=i,S=o.utils.unwrapObservable(i),C=0;C<j.length;C++)F=o.utils.unwrapObservable(F)[j[C]];if(void 0!==F._defaultComputed&&(console.log(\"Found variant on a style property: beware variants should be only used on content properties because they don't match the theme fallback behaviour\",e._variant),F=F._defaultComputed),void 0===F)throw console.log(\"ERROR looking for variant target\",e._variant,i),\"ERROR looking for variant target \"+e._variant;S._nextVariant=_nextVariantFunction.bind(F,o,F,_getVariants(e))}for(var x in e)if(e.hasOwnProperty(x)){var P=e[x];if(\"object\"==typeof P&&null!==P&&void 0!==P._context&&\"block\"==P._context){var B=r[x](),E=_makeComputedFunction(t[x],t,n,o,r,a,B);i[x](E)}else if(\"object\"==typeof P&&null!==P&&\"blocks\"==P.type){for(var D,I,T,A=r[x](),V=A.blocks(),U=0;U<V.length;U++)D=o.utils.unwrapObservable(V[U]),I=o.utils.unwrapObservable(D.type),T=_makeComputedFunction(t[I],t,n,o,r,a,D),V[U](T);var W=A.blocks;_augmentBlocksObservable(W,_blockInstrumentFunction.bind(A,void 0,t,n,o,void 0,r,a)),r[x]._wrap=_makeBlocksWrap.bind(r[x],W._instrumentBlock),r[x]._unwrap=_unwrap.bind(r[x])}}return i},_augmentBlocksObservable=function(e,t){e._instrumentBlock=t,void 0===e.origPush&&(e.origPush=e.push,e.push=_makePush.bind(e),e.origSplice=e.splice,e.splice=_makeSplice.bind(e))},_makeBlocksWrap=function(e,t){var n=ko.toJS(t),o=n.blocks;n.blocks=[];var r=wrap(n)();_augmentBlocksObservable(r.blocks,e);for(var a=0;a<o.length;a++){var i=ko.toJS(o[a]);i.id=\"block_\"+a,r.blocks.push(i)}this(r)},_makePush=function(){if(arguments.length>1)throw\"Array push with multiple arguments not implemented\";if(arguments.length>0&&ko.isObservable(arguments[0])&&(\"function\"==typeof arguments[0]._unwrap?arguments[0]=arguments[0]._unwrap():console.log(\"WARN: pushing observable with no _unwrap function (TODO remove me, expected condition)\")),ko.isObservable(arguments[0]))return this.origPush.apply(this,arguments);var e=this._instrumentBlock(arguments[0]);return this.origPush.apply(this,[e])},_makeSplice=function(){if(arguments.length>3)throw\"Array splice with multiple objects not implemented\";if(arguments.length>2&&ko.isObservable(arguments[2])&&(\"function\"==typeof arguments[2]._unwrap?arguments[2]=arguments[2]._unwrap():console.log(\"WARN: splicing observable with no _unwrap function (TODO remove me, expected condition)\")),arguments.length>2&&!ko.isObservable(arguments[2])){var e=this._instrumentBlock(arguments[2]);return this.origSplice.apply(this,[arguments[0],arguments[1],e])}return this.origSplice.apply(this,arguments)},_blockInstrumentFunction=function(e,t,n,o,r,a,i,l){void 0===r&&(r=l);var s=wrap(r);return s(_makeComputedFunction(e,t,n,o,a,i,s())),s._unwrap=_unwrap.bind(s),s},_wrap=function(e,t){this(ko.utils.unwrapObservable(e(ko,t,void 0,!0)))},_unwrap=function(){return ko.toJS(this)},_modelInstrument=function(e,t,n){var o=_blockInstrumentFunction.bind(void 0,t,n,n.themes),r=o(ko,e,void 0,!0);return r._wrap=_wrap.bind(r,o),r._unwrap=_unwrap.bind(r),r};module.exports=_modelInstrument;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndyYXBwZXIuanMiXSwibmFtZXMiOlsia28iLCJyZXF1aXJlIiwiY29uc29sZSIsIndyYXAiLCJ2IiwidHlwZU9mdiIsImNvbnN0cnVjdG9yIiwiRGF0ZSIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsInIiLCJvYnNlcnZhYmxlQXJyYXkiLCJsZW5ndGgiLCJpIiwibCIsInB1c2giLCJ0IiwiayIsInd2Iiwib2JzZXJ2YWJsZSIsInQyIiwiX2dldE9wdGlvbnNPYmplY3QiLCJvcHRpb25zIiwib3B0aW9uc0NvdXBsZXMiLCJzcGxpdCIsIm9wdHMiLCJvcHQiLCJfbWFrZUNvbXB1dGVkIiwidGFyZ2V0IiwiZGVmIiwibnVsbElmRXF1YWwiLCJzY2hlbWVTZWxlY3RvciIsInRoZW1lUGF0aCIsInRoZW1lcyIsImNvbXB1dGVkIiwicmVhZCIsInZhbCIsInNjaGVtZSIsInV0aWxzIiwidW53cmFwT2JzZXJ2YWJsZSIsIndyaXRlIiwidmFsdWUiLCJkZWZWYWwiLCJwZWVrT2JzZXJ2YWJsZSIsImN1cnJlbnQiLCJfbmV4dFZhcmlhbnRGdW5jdGlvbiIsInByb3AiLCJ2YXJpYW50cyIsImN1cnJlbnRWYWx1ZSIsIndhcm4iLCJuZXh0VmFyaWFudCIsIl9nZXRWYXJpYW50cyIsInZhcmlhbnRQcm9wIiwiX3ZhcmlhbnQiLCJfd2lkZ2V0IiwiX29wdGlvbnMiLCJlcnJvciIsImtleXMiLCJfbWFrZUNvbXB1dGVkRnVuY3Rpb24iLCJkZWZzIiwidGhtcyIsImNvbnRlbnRNb2RlbCIsImlzQ29udGVudCIsInR5cGUiLCJsb2ciLCJzZWxmUGF0aCIsInBwIiwiX2dsb2JhbFN0eWxlcyIsInAiLCJoYXNPd25Qcm9wZXJ0eSIsInNjaGVtZVBhdGgiLCJ2bSIsInBhdGgiLCJzY2hlbWVQYXRoT3JpZyIsInN1YnN0ciIsInBhdGhQYXJ0cyIsInNraXAiLCJzY2hlbWVQYXJ0cyIsImkzIiwidFBhcnRzIiwiaTIiLCJpc09ic2VydmFibGUiLCJfZGVmYXVsdENvbXB1dGVkIiwicFBhcnRzIiwicFRhcmdldCIsInBQYXJlbnQiLCJpNCIsIl9uZXh0VmFyaWFudCIsImJpbmQiLCJwcm9wMiIsIl9jb250ZXh0IiwicHJvcFZtIiwibmV3Vm0iLCJvbGRCbG9jayIsImJsb2NrVHlwZSIsIm5ld0Jsb2NrIiwibWFpblZtIiwiYmxvY2tzVm0iLCJibG9ja3MiLCJpYiIsImJsb2Nrc09icyIsIl9hdWdtZW50QmxvY2tzT2JzZXJ2YWJsZSIsIl9ibG9ja0luc3RydW1lbnRGdW5jdGlvbiIsInVuZGVmaW5lZCIsIl93cmFwIiwiX21ha2VCbG9ja3NXcmFwIiwiX2luc3RydW1lbnRCbG9jayIsIl91bndyYXAiLCJpbnN0cnVtZW50Iiwib3JpZ1B1c2giLCJfbWFrZVB1c2giLCJvcmlnU3BsaWNlIiwic3BsaWNlIiwiX21ha2VTcGxpY2UiLCJpbnB1dE1vZGVsIiwibW9kZWwiLCJ0b0pTIiwiaW5wdXQiLCJyZXMiLCJvYmoiLCJpZCIsInRoaXMiLCJhcmd1bWVudHMiLCJhcHBseSIsImluc3RydW1lbnRlZCIsImtub2Nrb3V0Iiwic2VsZiIsIm1vZGVsQ29udGVudCIsInNlbGYyIiwidW53cmFwcGVkIiwiX21vZGVsSW5zdHJ1bWVudCIsIm1vZGVsRGVmIiwiX2luc3RydW1lbnQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxhQU1BLElBQUlBLEdBQUtDLFFBQVEsWUFDYkMsUUFBVUQsUUFBUSxXQUV0QixTQUFTRSxLQUFLQyxHQUNaLElBQUlDLFNBQWlCRCxFQVVyQixHQVRnQixXQUFaQyxJQUNFRCxFQUNFQSxFQUFFRSxhQUFlQyxLQUFNRixFQUFVLE9BQ1Msa0JBQXJDRyxPQUFPQyxVQUFVQyxTQUFTQyxLQUFLUCxLQUF3QkMsRUFBVSxTQUUxRUEsRUFBVSxRQUlDLFNBQVhBLEVBQW9CLENBRXRCLElBQUlPLEVBQUlaLEdBQUdhLGtCQUNYLElBQUtULEdBQWtCLElBQWJBLEVBQUVVLE9BQWMsT0FBT0YsRUFDakMsSUFBSyxJQUFJRyxFQUFJ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QUMxRCxJQUFJRSxFQUFlSCxLQUFLZixpQkFBaUJnQixVQUFVLElBQ25ELE9BQU9ELEtBQUtWLFdBQVdZLE1BQU1GLE1BQU9DLFVBQVUsR0FBSUEsVUFBVSxHQUFJRSxJQUVoRSxPQUFPSCxLQUFLVixXQUFXWSxNQUFNRixLQUFNQyxZQUtuQ3BCLHlCQUEyQixTQUFTekUsRUFBSzhCLEVBQU0xQixFQUFRNEYsRUFBVUMsRUFBTUMsRUFBY2pFLEVBQVdrRSxRQUUvRSxJQUFSRixJQUFxQkEsRUFBT0UsR0FFdkMsSUFBSVYsRUFBTXJILEtBQUs2SCxHQUtmLE9BSEFSLEVBQUk1RCxzQkFBc0I3QixFQUFLOEIsRUFBTTFCLEVBQVE0RixFQUFVRSxFQUFjakUsRUFBV3dELE1BRWhGQSxFQUFJWCxRQUFVQSxRQUFRbkIsS0FBSzhCLEdBQ3BCQSxHQUdMZCxNQUFRLFNBQVNJLEVBQVlxQixHQUUvQlIsS0FEaUIzSCxHQUFHd0MsTUFBTUMsaUJBQWlCcUUsRUFBVzlHLEdBQUltSSxPQUFXMUIsR0FBVyxNQUk5RUksUUFBVSxXQUNaLE9BQU83RyxHQUFHc0gsS0FBS0ssT0FHYlMsaUJBQW1CLFNBQVNmLEVBQU9nQixFQUFVeEUsR0FDL0MsSUFBSXlFLEVBQWM5Qix5QkFBeUJkLFVBQUtlLEVBQVc0QixFQUFVeEUsRUFBTUEsRUFBYSxRQUNwRjJELEVBQU1jLEVBQVl0SSxHQUFJcUgsT0FBT1osR0FBVyxHQUk1QyxPQUZBZSxFQUFJZCxNQUFRQSxNQUFNaEIsS0FBSzhCLEVBQUtjLEdBQzVCZCxFQUFJWCxRQUFVQSxRQUFRbkIsS0FBSzhCLEdBQ3BCQSxHQUdUZSxPQUFPQyxRQUFVSiIsImZpbGUiOiIvaG9tZS9idXJlcy9tb3NhaWNvL3NyYy9qcy9jb252ZXJ0ZXIvd3JhcHBlci5qcyJ9",
"var tinycolor=require('tinycolor2');function Color(t){this.getBrightness=function(n){return t(n).getBrightness()},this.isLight=function(n){return t(n).isLight()},this.isDark=function(n){return t(n).isDark()},this.getLuminance=function(n){return t(n).getLuminance()},this.lighten=function(n,i){return t(n).lighten(i).toHexString()},this.brighten=function(n,i){return t(n).brighten(i).toHexString()},this.darken=function(n,i){return t(n).darken(i).toHexString()},this.desaturate=function(n,i){return t(n).desaturate(i).toHexString()},this.saturate=function(n,i){return t(n).saturate(i).toHexString()},this.greyscale=function(n){return t(n).greyscale().toHexString()},this.spin=function(n,i){return t(n).spin(i).toHexString()},this.complement=function(n){return t(n).complement().toHexString()},this.mix=t.mix,this.readability=t.readability,this.isReadable=t.isReadable,this.mostReadable=t.mostReadable}var colorPlugin=function(t){global.Color=new Color(tinycolor)};module.exports=colorPlugin;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbG9yLmpzIl0sIm5hbWVzIjpbInRpbnljb2xvciIsInJlcXVpcmUiLCJDb2xvciIsInRoaXMiLCJnZXRCcmlnaHRuZXNzIiwiY29sb3IiLCJpc0xpZ2h0IiwiaXNEYXJrIiwiZ2V0THVtaW5hbmNlIiwibGlnaHRlbiIsImFtb3VudCIsInRvSGV4U3RyaW5nIiwiYnJpZ2h0ZW4iLCJkYXJrZW4iLCJkZXNhdHVyYXRlIiwic2F0dXJhdGUiLCJncmV5c2NhbGUiLCJzcGluIiwiY29tcGxlbWVudCIsIm1peCIsInJlYWRhYmlsaXR5IiwiaXNSZWFkYWJsZSIsIm1vc3RSZWFkYWJsZSIsImNvbG9yUGx1Z2luIiwidm0iLCJnbG9iYWwiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxVQUFZQyxRQUFRLGFBRXhCLFNBQVNDLE1BQU1GLEdBQ2JHLEtBQUtDLGNBQWdCLFNBQVNDLEdBQzVCLE9BQU9MLEVBQVVLLEdBQU9ELGlCQUUxQkQsS0FBS0csUUFBVSxTQUFTRCxHQUN0QixPQUFPTCxFQUFVSyxHQUFPQyxXQUUxQkgsS0FBS0ksT0FBUyxTQUFTRixHQUNyQixPQUFPTCxFQUFVSyxHQUFPRSxVQUUxQkosS0FBS0ssYUFBZSxTQUFTSCxHQUMzQixPQUFPTCxFQUFVSyxHQUFPRyxnQkFJMUJMLEtBQUtNLFFBQVUsU0FBU0osRUFBT0ssR0FDN0IsT0FBT1YsRUFBVUssR0FBT0ksUUFBUUMsR0FBUUMsZUFFMUNSLEtBQUtTLFNBQVcsU0FBU1AsRUFBT0ssR0FDOUIsT0FBT1YsRUFBVUssR0FBT08sU0FBU0YsR0FBUUMsZUFFM0NSLEtBQUtVLE9BQVMsU0FBU1IsRUFBT0ssR0FDNUIsT0FBT1YsRUFBVUssR0FBT1EsT0FBT0gsR0FBUUMsZUFFekNSLEtBQUtXLFdBQWEsU0FBU1QsRUFBT0ssR0FDaEMsT0FBT1YsRUFBVUssR0FBT1MsV0FBV0osR0FBUUMsZUFFN0NSLEtBQUtZLFNBQVcsU0FBU1YsRUFBT0ssR0FDOUIsT0FBT1YsRUFBVUssR0FBT1UsU0FBU0wsR0FBUUMsZUFFM0NSLEtBQUthLFVBQVksU0FBU1gsR0FDeEIsT0FBT0wsRUFBVUssR0FBT1csWUFBWUwsZUFFdENSLEtBQUtjLEtBQU8sU0FBU1osRUFBT0ssR0FDMUIsT0FBT1YsRUFBVUssR0FBT1ksS0FBS1AsR0FBUUMsZUFFdkNSLEtBQUtlLFdBQWEsU0FBU2IsR0FDekIsT0FBT0wsRUFBVUssR0FBT2EsYUFBYVAsZUFHdkNSLEtBQUtnQixJQUFNbkIsRUFBVW1CLElBQ3JCaEIsS0FBS2lCLFlBQWNwQixFQUFVb0IsWUFDN0JqQixLQUFLa0IsV0FBYXJCLEVBQVVxQixXQUM1QmxCLEtBQUttQixhQUFldEIsRUFBVXNCLGFBR2hDLElBQUlDLFlBQWMsU0FBU0MsR0FDekJDLE9BQU92QixNQUFRLElBQUlBLE1BQU1GLFlBRzNCMEIsT0FBT0MsUUFBVUoiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvZXh0L2NvbG9yLmpzIn0=",
"\"use strict\";var console=require('console-browserify'),$=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),inlineDocument=require(\"juice/lib/inline\")({}).inlineDocument,inlinerPlugin=function(e){e.inline=function(e){$(\"[style]:not([replacedstyle])\",e).each(function(e,n){var t=$(n);t.attr(\"replacedstyle\",t.attr(\"style\"))});var n=[];$('style[data-inline=\"true\"]',e).each(function(e,t){var i=$(t).html();i=(i=i.replace(/<!-- ko ((?!--).)*? -->/g,\"\")).replace(/<!-- \\/ko -->/g,\"\"),n.push(i),$(t).removeAttr(\"data-inline\")});var t=n.join(\"\\n\"),i=function(n,t){return void 0===t&&(t=e),$(n,t)};i.root=function(){return $(\":root\",e)},inlineDocument(i,t,{styleAttributeName:\"replacedstyle\"})}};module.exports=inlinerPlugin;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlubGluZXIuanMiXSwibmFtZXMiOlsiY29uc29sZSIsInJlcXVpcmUiLCIkIiwiaW5saW5lRG9jdW1lbnQiLCJpbmxpbmVyUGx1Z2luIiwidm0iLCJpbmxpbmUiLCJkb2MiLCJlYWNoIiwiaW5kZXgiLCJlbCIsIiRlbCIsImF0dHIiLCJzdHlsZSIsImVsZW1lbnQiLCJjb250ZW50IiwiaHRtbCIsInJlcGxhY2UiLCJwdXNoIiwicmVtb3ZlQXR0ciIsInN0eWxlVGV4dCIsImpvaW4iLCIkY29udGV4dCIsInNlbGVjdG9yIiwiY29udGV4dCIsInJvb3QiLCJzdHlsZUF0dHJpYnV0ZU5hbWUiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUVBLElBQUlBLFFBQVVDLFFBQVEsV0FDbEJDLEVBQUlELFFBQVEsVUFDWkUsZUFBaUJGLFFBQVEsbUJBQVJBLEtBQWdDRSxlQUVqREMsY0FBZ0IsU0FBU0MsR0FDM0JBLEVBQUdDLE9BQVMsU0FBU0MsR0FFbkJMLEVBQUUsK0JBQWdDSyxHQUFLQyxLQUFLLFNBQVNDLEVBQU9DLEdBQzFELElBQUlDLEVBQU1ULEVBQUVRLEdBQ1pDLEVBQUlDLEtBQUssZ0JBQWlCRCxFQUFJQyxLQUFLLFlBR3JDLElBQUlDLEtBQ0pYLEVBQUUsNEJBQTZCSyxHQUFLQyxLQUFLLFNBQVNDLEVBQU9LLEdBQ3ZELElBQUlDLEVBQVViLEVBQUVZLEdBQVNFLE9BRXpCRCxHQURBQSxFQUFVQSxFQUFRRSxRQUFRLDJCQUE0QixLQUNwQ0EsUUFBUSxpQkFBa0IsSUFDNUNKLEVBQU1LLEtBQUtILEdBQ1hiLEVBQUVZLEdBQVNLLFdBQVcsaUJBRXhCLElBQUlDLEVBQVlQLEVBQU1RLEtBQUssTUFDdkJDLEVBQVcsU0FBU0MsRUFBVUMsR0FFaEMsWUFEc0IsSUFBWEEsSUFBd0JBLEVBQVVqQixHQUN0Q0wsRUFBRXFCLEVBQVVDLElBRXJCRixFQUFTRyxLQUFPLFdBQ2QsT0FBT3ZCLEVBQUUsUUFBU0ssSUFFcEJKLGVBQWVtQixFQUFVRixHQUFhTSxtQkFBb0Isb0JBSTlEQyxPQUFPQyxRQUFVeEIiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvZXh0L2lubGluZXIuanMifQ==",
"\"use strict\";var console=require('console-browserify'),ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),$=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),lsLoader=function(e,t){var a=global.localStorage.getItem(\"metadata-\"+e);if(null!==a){var o,l=global.localStorage.getItem(\"template-\"+e);null!==l&&(o=JSON.parse(l));var n=JSON.parse(a);return{metadata:n,model:o,extension:lsCommandPluginFactory(n,t)}}throw\"Cannot find stored data for \"+e},lsCommandPluginFactory=function(e,t){return function(e,a,o){var l={name:\"Save\",enabled:ko.observable(!0),execute:function(){l.enabled(!1),o.metadata.changed=Date.now(),void 0===o.metadata.key&&(console.warn(\"Unable to find key in metadata object...\",o.metadata),o.metadata.key=e),global.localStorage.setItem(\"metadata-\"+e,o.exportMetadata()),global.localStorage.setItem(\"template-\"+e,o.exportJSON()),l.enabled(!0)}},n={name:\"Test\",enabled:ko.observable(!0)},r={name:\"Download\",enabled:ko.observable(!0)};n.execute=function(){n.enabled(!1);var l=global.localStorage.getItem(\"testemail\");if(null!==l&&\"null\"!=l||(l=o.t(\"Insert here the recipient email address\")),(l=global.prompt(o.t(\"Test email address\"),l)).match(/@/)){global.localStorage.setItem(\"testemail\",l),console.log(\"TODO testing...\",l);var r=t||\"/dl/\",d=$.post(r,{action:\"email\",rcpt:l,subject:\"[test] \"+e+\" - \"+a,html:o.exportHTML()},null,\"html\");d.fail(function(){console.log(\"fail\",arguments),o.notifier.error(o.t(\"Unexpected error talking to server: contact us!\"))}),d.success(function(){console.log(\"success\",arguments),o.notifier.success(o.t(\"Test email sent...\"))}),d.always(function(){n.enabled(!0)})}else global.alert(o.t(\"Invalid email address\")),n.enabled(!0)},r.execute=function(){r.enabled(!1),o.notifier.info(o.t(\"Downloading...\")),o.exportHTMLtoTextarea(\"#downloadHtmlTextarea\");var e=t||\"/dl/\";global.document.getElementById(\"downloadForm\").setAttribute(\"action\",e),global.document.getElementById(\"downloadForm\").submit(),r.enabled(!0)},o.save=l,o.test=n,o.download=r}.bind(void 0,e.key,e.name)};module.exports=lsLoader;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvY2Fsc3RvcmFnZS5qcyJdLCJuYW1lcyI6WyJjb25zb2xlIiwicmVxdWlyZSIsImtvIiwiJCIsImxzTG9hZGVyIiwiaGFzaF9rZXkiLCJlbWFpbFByb2Nlc3NvckJhY2tlbmQiLCJtZFN0ciIsImdsb2JhbCIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJtb2RlbCIsInRkIiwiSlNPTiIsInBhcnNlIiwibWQiLCJtZXRhZGF0YSIsImV4dGVuc2lvbiIsImxzQ29tbWFuZFBsdWdpbkZhY3RvcnkiLCJtZGtleSIsIm1kbmFtZSIsInZpZXdNb2RlbCIsInNhdmVDbWQiLCJuYW1lIiwiZW5hYmxlZCIsIm9ic2VydmFibGUiLCJleGVjdXRlIiwiY2hhbmdlZCIsIkRhdGUiLCJub3ciLCJrZXkiLCJ3YXJuIiwic2V0SXRlbSIsImV4cG9ydE1ldGFkYXRhIiwiZXhwb3J0SlNPTiIsInRlc3RDbWQiLCJkb3dubG9hZENtZCIsImVtYWlsIiwidCIsInByb21wdCIsIm1hdGNoIiwibG9nIiwicG9zdFVybCIsInBvc3QiLCJhY3Rpb24iLCJyY3B0Iiwic3ViamVjdCIsImh0bWwiLCJleHBvcnRIVE1MIiwiZmFpbCIsImFyZ3VtZW50cyIsIm5vdGlmaWVyIiwiZXJyb3IiLCJzdWNjZXNzIiwiYWx3YXlzIiwiYWxlcnQiLCJpbmZvIiwiZXhwb3J0SFRNTHRvVGV4dGFyZWEiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwic2V0QXR0cmlidXRlIiwic3VibWl0Iiwic2F2ZSIsInRlc3QiLCJkb3dubG9hZCIsImJpbmQiLCJ1bmRlZmluZWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUVBLElBQUlBLFFBQVVDLFFBQVEsV0FDbEJDLEdBQUtELFFBQVEsWUFDYkUsRUFBSUYsUUFBUSxVQUVaRyxTQUFXLFNBQVNDLEVBQVVDLEdBQ2hDLElBQUlDLEVBQVFDLE9BQU9DLGFBQWFDLFFBQVEsWUFBY0wsR0FDdEQsR0FBYyxPQUFWRSxFQUFnQixD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",
"var utilPlugin=function(e){global.Util={decodeURI:decodeURI,encodeURI:encodeURI,decodeURIComponent:decodeURIComponent,encodeURIComponent:encodeURIComponent}};module.exports=utilPlugin;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWwuanMiXSwibmFtZXMiOlsidXRpbFBsdWdpbiIsInZtIiwiZ2xvYmFsIiwiVXRpbCIsImRlY29kZVVSSSIsImVuY29kZVVSSSIsImRlY29kZVVSSUNvbXBvbmVudCIsImVuY29kZVVSSUNvbXBvbmVudCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFdBQWEsU0FBU0MsR0FDeEJDLE9BQU9DLE1BQ0xDLFVBQWFBLFVBQ2JDLFVBQWFBLFVBQ2JDLG1CQUFzQkEsbUJBQ3RCQyxtQkFBc0JBLHFCQUkxQkMsT0FBT0MsUUFBVVQiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvZXh0L3V0aWwuanMifQ==",
"\"use strict\";require(\"knockout-sortable\"),require(\"./bindings/jqueryui-spinner.js\"),require(\"./bindings/jqueryui-tabs.js\"),require(\"./bindings/colorpicker.js\"),require(\"./bindings/blocks.js\"),require(\"./bindings/csstext.js\"),require(\"./bindings/bind-iframe.js\"),require(\"./bindings/droppable.js\"),require(\"./bindings/fileupload.js\"),require(\"./bindings/virtuals.js\"),require(\"./bindings/wysiwygs.js\"),require(\"./bindings/scrollfix.js\"),require(\"./bindings/if-subs.js\"),require(\"./bindings/extsortables.js\"),require(\"./bindings/eventable.js\"),require(\"./bindings/tooltips.js\"),require(\"./bindings/extender-pagination.js\"),require(\"./bindings/validated-value.js\"),require(\"./bindings/scrollintoview.js\");\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtvLWJpbmRpbmdzLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiXSwibWFwcGluZ3MiOiJBQUFBLGFBRUFBLFFBQVEscUJBRVJBLFFBQVEsa0NBQ1JBLFFBQVEsK0JBQ1JBLFFBQVEsNkJBQ1JBLFFBQVEsd0JBQ1JBLFFBQVEseUJBQ1JBLFFBQVEsNkJBQ1JBLFFBQVEsMkJBQ1JBLFFBQVEsNEJBQ1JBLFFBQVEsMEJBQ1JBLFFBQVEsMEJBQ1JBLFFBQVEsMkJBQ1JBLFFBQVEseUJBQ1JBLFFBQVEsOEJBQ1JBLFFBQVEsMkJBQ1JBLFFBQVEsMEJBQ1JBLFFBQVEscUNBQ1JBLFFBQVEsaUNBQ1JBLFFBQVEiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMva28tYmluZGluZ3MuanMifQ==",
"\"use strict\";var $=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),kojqui=(typeof window !== \"undefined\" ? window['kojqui'] : typeof global !== \"undefined\" ? global['kojqui'] : null),templateConverter=require(\"./converter/main.js\"),console=require('console-browserify'),initializeViewmodel=require(\"./viewmodel.js\"),templateSystem=require(\"./bindings/choose-template.js\"),pluginsCall=function(e,t,n,o){var a,i,r,d,l;l=[],void 0!==o&&o?(a=e.length-1,i=0,r=-1):(a=0,i=e.length-1,r=1);for(var s=a;s!=i+r;s+=r)void 0!==e[s][t]&&void 0!==(d=e[s][t].apply(e[s],n))&&l.push(d);return l},origDisposeCallback=ko.utils.domNodeDisposal.addDisposeCallback;ko.utils.domNodeDisposal.addDisposeCallback=function(e,t){origDisposeCallback(e,function(e){try{t(e)}catch(e){console.warn(\"Caught unexpected dispose callback exception\",e)}})};var bindingPluginMaker=function(e){return{viewModel:function(t){try{e(\"applyBindings\",ko.applyBindings.bind(void 0,t))}catch(e){throw console.warn(e,e.stack),e}},dispose:function(){try{e(\"unapplyBindings\",ko.cleanNode.bind(this,global.document.body))}catch(e){throw console.warn(e,e.stack),e}}}},templateCreator=function(e,t,n,o){var a=n;for(void 0!==n&&void 0!==o&&(\"object\"==typeof t&&\"replacedhtml\"==t.tagName.toLowerCase()||(a+=\"-\"+o));void 0===a||null===a||e.exists(a);)a=\"anonymous-\"+Math.floor(1e5*Math.random()+1);if(\"object\"==typeof t&&\"replacedhtml\"==t.tagName.toLowerCase()){var i=$(t),r=$(\"replacedhead\",i),d=$(\"replacedbody\",i);e.adder(a+\"-head\",r.html()||\"\"),e.adder(a+\"-show\",d.html()||\"\"),e.adder(a+\"-preview\",i.html()),e.adder(a+\"-wysiwyg\",i.html()),r.children().detach(),r.html(\"\\x3c!-- ko block: content --\\x3e\\x3c!-- /ko --\\x3e\"),r.before(\"\\x3c!-- ko withProperties: { templateMode: 'head' } --\\x3e\"),r.after(\"\\x3c!-- /ko --\\x3e\"),d.html(\"\\x3c!-- ko block: content --\\x3e\\x3c!-- /ko --\\x3e\"),e.adder(a+\"-iframe\",i[0].outerHTML)}else\"object\"==typeof t?e.adder(a,t.outerHTML):e.adder(a,t);return a};function _viewModelPluginInstance(e){var t;return{viewModel:function(n){t=e(n)},init:function(){void 0!==t&&void 0!==t.init&&t.init()},dispose:function(){void 0!==t&&void 0!==t.dispose&&t.dispose()}}}var _templateUrlConverter=function(e,t){return t.match(/^[^\\/]*:/)||t.match(/^\\//)||t.match(/^\\[/)||t.match(/^#?$/)?null:e+t},templateLoader=function(e,t,n,o,a,i){var r=\"string\"==typeof t?t:n.template,d=\"./\",l=r.lastIndexOf(\"/\");-1!=l&&(d=r.substr(0,l+1));var s,c=_templateUrlConverter.bind(void 0,d);s=void 0===n?{template:r,name:\"No name\",created:Date.now()}:n,$.get(r,function(t){templateCompiler(e,c,\"template\",t,o,s,a,i).init()})},templateCompiler=function(e,t,n,o,a,i,r,d){var l=o.match(/^([\\S\\s]*)([<]html[^>]*>[\\S\\s]*<\\/html>)([\\S\\s]*)$/i);if(null===l)throw\"Unable to find <html> opening and closing tags in the template\";var s=l[1],c={\"<html\":0,\"<head\":0,\"<body\":0,\"</html\":0,\"</body\":0,\"</head\":0},m=l[2].replace(/(<\\/?)(html|head|body)([^>]*>)/gi,function(e,t,n,o){return c[(t+n).toLowerCase()]+=1,t+\"replaced\"+n+o});for(var u in c)if(c.hasOwnProperty(u)&&1!=c[u]){if(0===c[u])throw\"ERROR: missing mandatory element \"+u+\">\";if(c[u]>1)throw\"ERROR: multiple element \"+u+\"> occourences are not supported (found \"+c[u]+\" occourences)\"}var p=l[3],h=[],b=[];if(void 0!==r)for(var v=0;v<r.length;v++)\"function\"==typeof r[v]?b.push(_viewModelPluginInstance(r[v])):b.push(r[v]);var g=[],f={adder:function(e,t){if(\"string\"!=typeof t)throw\"Template system: cannot create new template \"+e;var n=t.match(/(data)?-ko-[^ =:]*/g);n&&console.error(\"ERROR: found unexpected -ko- attribute in compiled template\",e,\", you probably mispelled it:\",n),templateSystem.addTemplate(e,t),g.push(e)},exists:function(e){return void 0!==templateSystem.getTemplateContent(e)},dispose:function(){for(var e=g.length-1;e>=0;e--)templateSystem.removeTemplate(g[e])}};ko.bindingHandlers.block.templateExists=f.exists;for(var y=templateCreator.bind(void 0,f),k=e(\"translateTemplate\",templateConverter.translateTemplate.bind(void 0,n,m,t,y)),w=e(\"generateModel\",templateConverter.wrappedResultModel.bind(void 0,k)),C={},x=pluginsCall(b,\"widget\",[$,ko,kojqui]),S=0;S<x.length;S++)C[x[S].widget]=x[S];h.push.apply(h,e(\"generateEditors\",templateConverter.generateEditors.bind(void 0,k,C,t,y,\"+$root.contentListeners()\")));var E=!1;if(void 0!==a&&null!==a){var M;M=\"string\"==typeof a?ko.utils.parseJson(a):a,2==e(\"checkModel\",templateConverter.checkModel.bind(void 0,w._unwrap(),h,M))&&(console.error(\"Trying to compile an incompatible template version!\",w._unwrap(),h,M),E=!0);try{w._wrap(M)}catch(e){console.error(\"Unable to inject model content!\",e),E=!0}}var T=s+templateSystem.getTemplateContent(n+\"-iframe\").replace(/(<\\/?)replaced(html|head|body)([^>]*>)/gi,function(e,t,n,o){return t+n+o})+p,L=ko.bindingHandlers.bindIframe.tpl;ko.bindingHandlers.bindIframe.tpl=T;var I={dispose:function(){ko.bindingHandlers.bindIframe.tpl=L}};b.push(I),b.push(f);var D=e(\"initializeViewmodel\",initializeViewmodel.bind(this,w,h,t,d));D.metadata=i;return void 0!==D.metadata.editorversion&&\"0.16.0\"!==D.metadata.editorversion&&console.warn(\"The model being loaded has been created with an older editor version\",D.metadata.editorversion,\"vs\",\"0.16.0\"),D.metadata.editorversion=\"0.16.0\",void 0!==k.version&&(void 0!==D.metadata.templateversion&&D.metadata.templateversion!==k.version&&console.error(\"The model being loaded has been created with a different template version\",k.version,\"vs\",D.metadata.templateversion),D.metadata.templateversion=k.version),templateSystem.init(),b.push(bindingPluginMaker(e)),pluginsCall(b,\"viewModel\",[D]),E&&$(\"#incompatible-template\").dialog({modal:!0,appendTo:\"#mo-body\",buttons:{Ok:function(){$(this).dialog(\"close\")}}}),{model:D,init:function(){pluginsCall(b,\"init\",void 0,!0)},dispose:function(){pluginsCall(b,\"dispose\",void 0,!0)}}},checkFeature=function(e,t){if(!t())throw console.warn(\"Missing feature\",e),\"Missing feature \"+e},isCompatible=function(){try{return checkFeature(\"matchMedia\",function(){return void 0!==global.matchMedia}),checkFeature(\"XMLHttpRequest 2\",function(){return\"XMLHttpRequest\"in global&&\"withCredentials\"in new global.XMLHttpRequest}),checkFeature(\"ES5 strict\",function(){return function(){return void 0===this}()}),checkFeature(\"CSS borderRadius\",function(){return void 0!==global.document.body.style.borderRadius}),checkFeature(\"CSS boxShadow\",function(){return void 0!==global.document.body.style.boxShadow}),checkFeature(\"CSS boxSizing\",function(){return void 0!==global.document.body.style.boxSizing}),checkFeature(\"CSS backgroundSize\",function(){return void 0!==global.document.body.style.backgroundSize}),checkFeature(\"CSS backgroundOrigin\",function(){return void 0!==global.document.body.style.backgroundOrigin}),checkBadBrowserExtensions(),!0}catch(e){return!1}},checkBadBrowserExtensions=function(){var e=\"checkbadbrowsersframe\",t=ko.bindingHandlers.bindIframe.tpl;ko.bindingHandlers.bindIframe.tpl='<!DOCTYPE html>\\r\\n<html>\\r\\n<head><title>A</title>\\r\\n</head>\\r\\n<body><p style=\"color: blue\" align=\"right\" data-bind=\"style: { color: \\'red\\' }\">B</p><div data-bind=\"text: content\"></div></body>\\r\\n</html>\\r\\n',$(\"body\").append('<iframe id=\"'+e+'\" data-bind=\"bindIframe: $data\"></iframe>');var n=global.document.getElementById(e);ko.applyBindings({content:\"dummy content\"},n);var o=n.contentWindow.document.doctype,a=\"<!DOCTYPE \"+o.name+(o.publicId?' PUBLIC \"'+o.publicId+'\"':\"\")+(!o.publicId&&o.systemId?\" SYSTEM\":\"\")+(o.systemId?' \"'+o.systemId+'\"':\"\")+\">\"+\"\\n\"+n.contentWindow.document.documentElement.outerHTML;ko.cleanNode(n),ko.removeNode(n),ko.bindingHandlers.bindIframe.tpl=t;var i='<!DOCTYPE html>\\n<html><head><title>A</title>\\n</head>\\n<body><p align=\"right\" style=\"color: red;\" data-bind=\"style: { color: \\'red\\' }\">B</p><div data-bind=\"text: content\">dummy content</div>\\n\\n</body></html>',r='<!DOCTYPE html>\\n<html><head><title>A</title>\\n</head>\\n<body><p style=\"color: red;\" data-bind=\"style: { color: \\'red\\' }\" align=\"right\">B</p><div data-bind=\"text: content\">dummy content</div>\\n\\n</body></html>',d='<!DOCTYPE html>\\n<html><head><title>A</title>\\n</head>\\n<body><p style=\"color: red;\" align=\"right\" data-bind=\"style: { color: \\'red\\' }\">B</p><div data-bind=\"text: content\">dummy content</div>\\n\\n</body></html>';if(i!==a&&r!==a&&d!==a)throw console.info(\"BadBrowser.FrameContentCheck\",a.length,i.length,r.length,d.length,a==i,a==r,a==d),console.info(a),\"Unexpected frame content. Misbehaving browser: \"+a.length+\"/\"+i.length+\"/\"+r.length+\"/\"+d.length},fixPageEvents=function(){global.addEventListener&&(global.addEventListener(\"drag\",function(e){(e=e||global.event).preventDefault()},!1),global.addEventListener(\"dragstart\",function(e){(e=e||global.event).preventDefault()},!1),global.addEventListener(\"dragover\",function(e){(e=e||global.event).preventDefault()},!1),global.addEventListener(\"drop\",function(e){(e=e||global.event).preventDefault()},!1),global.document.body.addEventListener(\"drop\",function(e){e.preventDefault()},!1)),global.document.ondragstart&&(global.document.ondragstart=function(){return!1})};module.exports={compile:templateCompiler,load:templateLoader,isCompatible:isCompatible,fixPageEvents:fixPageEvents};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlbXBsYXRlLWxvYWRlci5qcyJdLCJuYW1lcyI6WyIkIiwicmVxdWlyZSIsImtvIiwia29qcXVpIiwidGVtcGxhdGVDb252ZXJ0ZXIiLCJjb25zb2xlIiwiaW5pdGlhbGl6ZVZpZXdtb2RlbCIsInRlbXBsYXRlU3lzdGVtIiwicGx1Z2luc0NhbGwiLCJwbHVnaW5zIiwibWV0aG9kTmFtZSIsImFyZ3MiLCJyZXZlcnNlIiwic3RhcnQiLCJlbmQiLCJkaWZmIiwicmVzIiwicmVzdWx0cyIsImxlbmd0aCIsImkiLCJhcHBseSIsInB1c2giLCJvcmlnRGlzcG9zZUNhbGxiYWNrIiwidXRpbHMiLCJkb21Ob2RlRGlzcG9zYWwiLCJhZGREaXNwb3NlQ2FsbGJhY2siLCJub2RlIiwiY2FsbGJhY2siLCJlIiwid2FybiIsImJpbmRpbmdQbHVnaW5NYWtlciIsInBlcmZvcm1hbmNlQXdhcmVDYWxsZXIiLCJ2aWV3TW9kZWwiLCJhcHBseUJpbmRpbmdzIiwiYmluZCIsInVuZGVmaW5lZCIsImVyciIsInN0YWNrIiwiZGlzcG9zZSIsImNsZWFuTm9kZSIsInRoaXMiLCJnbG9iYWwiLCJkb2N1bWVudCIsImJvZHkiLCJ0ZW1wbGF0ZUNyZWF0b3IiLCJ0ZW1wbGF0ZVBsdWdpbiIsImh0bWxPckVsZW1lbnQiLCJvcHRpb25hbE5hbWUiLCJ0ZW1wbGF0ZU1vZGUiLCJ0bXBOYW1lIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiZXhpc3RzIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiJGVsIiwiJGhlYWQiLCIkYm9keSIsImFkZGVyIiwiaHRtbCIsImNoaWxkcmVuIiwiZGV0YWNoIiwiYmVmb3JlIiwiYWZ0ZXIiLCJvdXRlckhUTUwiLCJfdmlld01vZGVsUGx1Z2luSW5zdGFuY2UiLCJwbHVnaW5GdW5jdGlvbiIsImluc3RhbmNlIiwiaW5pdCIsIl90ZW1wbGF0ZVVybENvbnZlcnRlciIsImJhc2VQYXRoIiwidXJsIiwibWF0Y2giLCJ0ZW1wbGF0ZUxvYWRlciIsInRlbXBsYXRlRmlsZU5hbWUiLCJ0ZW1wbGF0ZU1ldGFkYXRhIiwianNvcmpzb24iLCJleHRlbnNpb25zIiwiZ2FsbGVyeVVybCIsInRlbXBsYXRlRmlsZSIsInRlbXBsYXRlIiwidGVtcGxhdGVQYXRoIiwicCIsImxhc3RJbmRleE9mIiwic3Vic3RyIiwibWV0YWRhdGEiLCJ0ZW1wbGF0ZVVybENvbnZlcnRlciIsIm5hbWUiLCJjcmVhdGVkIiwiRGF0ZSIsIm5vdyIsImdldCIsInRlbXBsYXRlY29kZSIsInRlbXBsYXRlQ29tcGlsZXIiLCJ0ZW1wbGF0ZU5hbWUiLCJwcmVmaXgiLCJiYXNpY1N0cnVjdHVyZSIsIjxodG1sIiwiPGhlYWQiLCI8Ym9keSIsIjwvaHRtbCIsIjwvYm9keSIsIjwvaGVhZCIsInJlcGxhY2UiLCJwMSIsInAyIiwicDMiLCJlbGUiLCJoYXNPd25Qcm9wZXJ0eSIsInBvc3RmaXgiLCJibG9ja0RlZnMiLCJjcmVhdGVkVGVtcGxhdGVzIiwidGVtcGxhdGVzUGx1Z2luIiwiaWQiLCJ0cmFzaCIsImVycm9yIiwiYWRkVGVtcGxhdGUiLCJnZXRUZW1wbGF0ZUNvbnRlbnQiLCJyZW1vdmVUZW1wbGF0ZSIsImJpbmRpbmdIYW5kbGVycyIsInRlbXBsYXRlRXhpc3RzIiwibXlUZW1wbGF0ZUNyZWF0b3IiLCJ0ZW1wbGF0ZURlZiIsInRyYW5zbGF0ZVRlbXBsYXRlIiwiY29udGVudCIsIndyYXBwZWRSZXN1bHRNb2RlbCIsIndpZGdldHMiLCJ3aWRnZXRQbHVnaW5zIiwid2kiLCJ3aWRnZXQiLCJnZW5lcmF0ZUVkaXRvcnMiLCJpbmNvbXBhdGlibGVUZW1wbGF0ZSIsInVud3JhcHBlZCIsInBhcnNlSnNvbiIsImNoZWNrTW9kZWwiLCJfdW53cmFwIiwiX3dyYXAiLCJleCIsImlmcmFtZVRwbCIsIm9yaWdpRnJhbWVUcGwiLCJiaW5kSWZyYW1lIiwidHBsIiwiaUZyYW1lUGx1Z2luIiwiZWRpdG9ydmVyc2lvbiIsInZlcnNpb24iLCJ0ZW1wbGF0ZXZlcnNpb24iLCJkaWFsb2ciLCJtb2RhbCIsImFwcGVuZFRvIiwiYnV0dG9ucyIsIk9rIiwibW9kZWwiLCJjaGVja0ZlYXR1cmUiLCJmZWF0dXJlIiwiZnVuYyIsImlzQ29tcGF0aWJsZSIsIm1hdGNoTWVkaWEiLCJYTUxIdHRwUmVxdWVzdCIsInN0eWxlIiwiY2hlY2tCYWRCcm93c2VyRXh0ZW5zaW9ucyIsImV4Y2VwdGlvbiIsIm9yaWdUcGwiLCJhcHBlbmQiLCJmcmFtZUVsIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250ZW50V2luZG93IiwiZG9jdHlwZSIsInB1YmxpY0lkIiwic3lzdGVtSWQiLCJkb2N1bWVudEVsZW1lbnQiLCJyZW1vdmVOb2RlIiwiZXhwZWN0ZWQiLCJleHBlY3RlZDIiLCJleHBlY3RlZDMiLCJpbmZvIiwiZml4UGFnZUV2ZW50cyIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwib25kcmFnc3RhcnQiLCJtb2R1bGUiLCJleHBvcnRzIiwiY29tcGlsZSIsImxvYWQiXSwibWFwcGluZ3MiOiJBQUFBLGFBR0EsSUFBSUEsRUFBSUMsUUFBUSxVQUNaQyxHQUFLRCxRQUFRLFlBQ2JFLE9BQVNGLFFBQVEscUJBQ2pCRyxrQkFBb0JILFFBQVEsdUJBQzVCSSxRQUFVSixRQUFRLFdBQ2xCSyxvQkFBc0JMLFFBQVEsa0JBQzlCTSxlQUFpQk4sUUFBUSxpQ0FJekJPLFlBQWMsU0FBU0MsRUFBU0MsRUFBWUMsRUFBTUMsR0FDcEQsSUFBSUMsRUFBT0MsRUFBS0MsRUFBTUMsRUFBS0MsRUFDM0JBLFVBQ3VCLElBQVpMLEdBQTJCQSxHQUNwQ0MsRUFBUUosRUFBUVMsT0FBUyxFQUN6QkosRUFBTSxFQUNOQyxHQUFRLElBRVJGLEVBQVEsRUFDUkMsRUFBTUwsRUFBUVMsT0FBUyxFQUN2QkgsRUFBTyxHQUVULElBQUssSUFBSUksRUFBSU4sRUFBT00sR0FBS0wsRUFBTUMsRUFBTUksR0FBS0osT0FDRixJQUEzQk4sRUFBUVUsR0FBR1QsU0FFRCxLQURuQk0sRUFBTVAsRUFBUVUsR0FBR1QsR0FBWVUsTUFBTVgsRUFB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UUFJOUg4SixjQUFnQixXQUdkdkksT0FBT3dJLG1CQUVUeEksT0FBT3dJLGlCQUFpQixPQUFRLFNBQVNySixJQUV2Q0EsRUFBSUEsR0FBS2EsT0FBT3lJLE9BQ2RDLG1CQUNELEdBQ0gxSSxPQUFPd0ksaUJBQWlCLFlBQWEsU0FBU3JKLElBRTVDQSxFQUFJQSxHQUFLYSxPQUFPeUksT0FDZEMsbUJBQ0QsR0FDSDFJLE9BQU93SSxpQkFBaUIsV0FBWSxTQUFTckosSUFHM0NBLEVBQUlBLEdBQUthLE9BQU95SSxPQUNkQyxtQkFDRCxHQUNIMUksT0FBT3dJLGlCQUFpQixPQUFRLFNBQVNySixJQUV2Q0EsRUFBSUEsR0FBS2EsT0FBT3lJLE9BQ2RDLG1CQUNELEdBQ0gxSSxPQUFPQyxTQUFTQyxLQUFLc0ksaUJBQWlCLE9BQVEsU0FBU3JKLEdBR3JEQSxFQUFFdUosbUJBQ0QsSUFFRDFJLE9BQU9DLFNBQVMwSSxjQUNsQjNJLE9BQU9DLFNBQVMwSSxZQUFjLFdBRTVCLE9BQU8sS0FLYkMsT0FBT0MsU0FDTEMsUUFBU3pGLGlCQUNUMEYsS0FBTTlHLGVBQ05rRixhQUFjQSxhQUNkb0IsY0FBZUEiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvdGVtcGxhdGUtbG9hZGVyLmpzIn0=",
"\"use strict\";var console=require('console-browserify'),_call=function(e){return e()},logs=[],_timedCall=function(e,o){var l,t=(new Date).getTime();\"object\"==typeof console&&console.time&&console.time(e),l=_call(o),\"object\"==typeof console&&console.time&&console.timeEnd(e);var n=(new Date).getTime()-t;return\"object\"!=typeof console||console.time||console.log(e,\"took\",n,\"ms\"),logs.push({name:e,time:n}),logs.length>100&&logs.unshift(),l};module.exports={timedCall:_timedCall,logs:logs};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRpbWVkLWNhbGwuanMiXSwibmFtZXMiOlsiY29uc29sZSIsInJlcXVpcmUiLCJfY2FsbCIsIndoYXRUb0NhbGwiLCJsb2dzIiwiX3RpbWVkQ2FsbCIsIm5hbWUiLCJyZXMiLCJzdGFydCIsIkRhdGUiLCJnZXRUaW1lIiwidGltZSIsInRpbWVFbmQiLCJkaWZmIiwibG9nIiwicHVzaCIsImxlbmd0aCIsInVuc2hpZnQiLCJtb2R1bGUiLCJleHBvcnRzIiwidGltZWRDYWxsIl0sIm1hcHBpbmdzIjoiQUFBQSxhQUVBLElBQUlBLFFBQVVDLFFBQVEsV0FFbEJDLE1BQVEsU0FBU0MsR0FDbkIsT0FBT0EsS0FHTEMsUUFFQUMsV0FBYSxTQUFTQyxFQUFNSCxHQUM5QixJQUFJSSxFQUNBQyxHQUFRLElBQUlDLE1BQU9DLFVBQ0QsaUJBQVhWLFNBQXVCQSxRQUFRVyxNQUFNWCxRQUFRVyxLQUFLTCxHQUM3REMsRUFBTUwsTUFBTUMsR0FDVSxpQkFBWEgsU0FBdUJBLFFBQVFXLE1BQU1YLFFBQVFZLFFBQVFOLEdBQ2hFLElBQUlPLEdBQU8sSUFBSUosTUFBT0MsVUFBWUYsRUFRbEMsTUFQc0IsaUJBQVhSLFNBQXdCQSxRQUFRVyxNQUFNWCxRQUFRYyxJQUFJUixFQUFNLE9BQVFPLEVBQU0sTUFDakZULEtBQUtXLE1BQ0hULEtBQU1BLEVBQ05LLEtBQU1FLElBR0pULEtBQUtZLE9BQVMsS0FBS1osS0FBS2EsVUFDckJWLEdBR1RXLE9BQU9DLFNBQ0xDLFVBQVdmLFdBQ1hELEtBQU1BIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL3RpbWVkLWNhbGwuanMifQ==",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),undoManager=require(\"./undomanager.js\"),undoserializer=require(\"./undoserializer.js\"),addUndoStackExtensionMaker=function(e){return function(n){n.contentListeners(n.contentListeners()+2);var o=undoManager(n.content,{levels:100,undoLabel:ko.computed(function(){return n.t(\"Undo (#COUNT#)\")}),redoLabel:ko.computed(function(){return n.t(\"Redo\")})});return n.undo=o.undoCommand,n.undo.execute=e.bind(n,\"undo\",n.undo.execute),n.redo=o.redoCommand,n.redo.execute=e.bind(n,\"redo\",n.redo.execute),n.undoReset=e.bind(n,\"undoReset\",o.reset),n.setUndoModeMerge=o.setModeMerge,n.setUndoModeOnce=o.setModeOnce,o.setModeIgnore(),o.setUndoActionMaker(undoserializer.makeUndoAction.bind(void 0,n.content)),undoserializer.watchEnabled(!0),{pause:function(){o.setModeIgnore()},run:function(){o.setModeOnce()},init:function(){o.setModeOnce()},dispose:function(){n.contentListeners(n.contentListeners()-2),undoserializer.watchEnabled(!1),o.dispose()}}}};module.exports=addUndoStackExtensionMaker;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuZG9tYWluLmpzIl0sIm5hbWVzIjpbImtvIiwicmVxdWlyZSIsInVuZG9NYW5hZ2VyIiwidW5kb3NlcmlhbGl6ZXIiLCJhZGRVbmRvU3RhY2tFeHRlbnNpb25NYWtlciIsInBlcmZvcm1hbmNlQXdhcmVDYWxsZXIiLCJ2aWV3TW9kZWwiLCJjb250ZW50TGlzdGVuZXJzIiwidW5kb1JlZG9TdGFjayIsImNvbnRlbnQiLCJsZXZlbHMiLCJ1bmRvTGFiZWwiLCJjb21wdXRlZCIsInQiLCJyZWRvTGFiZWwiLCJ1bmRvIiwidW5kb0NvbW1hbmQiLCJleGVjdXRlIiwiYmluZCIsInJlZG8iLCJyZWRvQ29tbWFuZCIsInVuZG9SZXNldCIsInJlc2V0Iiwic2V0VW5kb01vZGVNZXJnZSIsInNldE1vZGVNZXJnZSIsInNldFVuZG9Nb2RlT25jZSIsInNldE1vZGVPbmNlIiwic2V0TW9kZUlnbm9yZSIsInNldFVuZG9BY3Rpb25NYWtlciIsIm1ha2VVbmRvQWN0aW9uIiwidW5kZWZpbmVkIiwid2F0Y2hFbmFibGVkIiwicGF1c2UiLCJydW4iLCJpbml0IiwiZGlzcG9zZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLGFBRUEsSUFBSUEsR0FBS0MsUUFBUSxZQUNiQyxZQUFjRCxRQUFRLG9CQUN0QkUsZUFBaUJGLFFBQVEsdUJBRXpCRywyQkFBNkIsU0FBU0MsR0FDeEMsT0FBTyxTQUFTQyxHQUVkQSxFQUFVQyxpQkFBaUJELEVBQVVDLG1CQUFxQixHQUcxRCxJQUFJQyxFQUFnQk4sWUFBWUksRUFBVUcsU0FDeENDLE9BQVEsSUFDUkMsVUFBV1gsR0FBR1ksU0FBUyxXQUFhLE9BQU9OLEVBQVVPLEVBQUUsb0JBQ3ZEQyxVQUFXZCxHQUFHWSxTQUFTLFdBQWEsT0FBT04sRUFBVU8sRUFBRSxZQWF6RCxPQVhBUCxFQUFVUyxLQUFPUCxFQUFjUSxZQUMvQlYsRUFBVVMsS0FBS0UsUUFBVVosRUFBdUJhLEtBQUtaLEVBQVcsT0FBUUEsRUFBVVMsS0FBS0UsU0FDdkZYLEVBQVVhLEtBQU9YLEVBQWNZLFlBQy9CZCxFQUFVYSxLQUFLRixRQUFVWixFQUF1QmEsS0FBS1osRUFBVyxPQUFRQSxFQUFVYSxLQUFLRixTQUN2RlgsRUFBVWUsVUFBWWhCLEVBQXVCYSxLQUFLWixFQUFXLFlBQWFFLEVBQWNjLE9BQ3hGaEIsRUFBVWlCLGlCQUFtQmYsRUFBY2dCLGFBQzNDbEIsRUFBVW1CLGdCQUFrQmpCLEVBQWNrQixZQUMxQ2xCLEVBQWNtQixnQkFDZG5CLEVBQWNvQixtQkFBbUJ6QixlQUFlMEIsZUFBZVgsVUFBS1ksRUFBV3hCLEVBQVVHLFVBQ3pGTixlQUFlNEIsY0FBYSxJQUcxQkMsTUFBTyxXQUNMeEIsRUFBY21CLGlCQUVoQk0sSUFBSyxXQUNIekIsRUFBY2tCLGVBRWhCUSxLQUFNLFdBQ0oxQixFQUFja0IsZUFFaEJTLFFBQVMsV0FDUDdCLEVBQVVDLGlCQUFpQkQsRUFBVUMsbUJBQXFCLEdBQzFESixlQUFlNEIsY0FBYSxHQUM1QnZCLEVBQWMyQixjQU90QkMsT0FBT0MsUUFBVWpDIiwiZmlsZSI6Ii9ob21lL2J1cmVzL21vc2FpY28vc3JjL2pzL3VuZG9tYW5hZ2VyL3VuZG9tYWluLmpzIn0=",
"\"use strict\";var ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),reactor=require('ko-reactor/dist/ko-reactor.min.js'),console=require('console-browserify'),undoManager=function(e,o){var t,n=ko.observableArray(),r=ko.observableArray(),i=0,d=0,u={levels:100,undoLabel:\"undo (#COUNT#)\",redoLabel:\"redo (#COUNT#)\"};o=\"object\"==typeof o?ko.utils.extend(u,o):u;var l=function(e){1==i?c(e,r):2==i?c(e,n):0==i&&(c(e,n),r.removeAll())},c=function(e,n){if(n().length>0){var r=(i=n()[n().length-1],d=e,void 0!==i.mergedAction?i.mergedAction(d):null);if(null!==r)return void(n()[n().length-1]=r)}var i,d;n().length>=o.levels&&n.shift(),t=n,n.push(e)},a=function(e,o,n){return{name:ko.computed(function(){return ko.utils.unwrapObservable(e).replace(/#COUNT#/,n().length)}),enabled:ko.computed(function(){return 0!==n().length}),execute:function(){var e=n.pop();if(e){var r=i;i=o;var u=d;d=3,e(),s(t),d=u,i=r}return!0}}},s=function(e){if(void 0===e)throw\"Unexpected operation: stack cleaner called with undefined stack\";e().length>0&&void 0!==e()[e().length-1].mergedAction&&delete e()[e().length-1].mergedAction},f=function(e,o){var t=function(e,o){e(),o()}.bind(void 0,e,o);return void 0!==e.mergedAction&&(t.mergedAction=e.mergedAction),t},m=function(e,o,t){if(void 0!==o)e(o);else{if(!t)throw\"Unexpected condition: no item and no child.oldValues!\";if(\"deleted\"==t.status)e.splice(t.index,0,t.value);else{if(\"added\"!=t.status)throw\"Unsupported item.status: \"+t.status;e.splice(t.index,1)}}},v=function(e,o,t,n,r){return e.bind(void 0,t,n,r)},g=(\"function\"==typeof reactor?reactor:ko.watch)(e,{depth:-1,oldValues:1,mutable:!0,tagFields:!0},function(e,o,t){var n=void 0!==o.oldValues?o.oldValues[0]:void 0,r=v(m,e,o,n,t);1!=d&&(3==d?void 0!==r&&(r.mergedAction=function(e){return void 0!==e.mergeMe&&e.mergeMe?f(e,this):null},r.mergeMe=!0):void 0!==r&&(o.oldValues&&2==d&&(r.mergedAction=function(e,o,t){return\"object\"==typeof t.mergeableAction&&e==t.mergeableAction.child?this:null}.bind(r,o,t),r.mergeableAction={child:o,item:t}),t&&\"deleted\"==t.status?r.mergedAction=function(e,o,t){return\"object\"==typeof t.mergeableMove&&o.value==t.mergeableMove.item.value?f(t,this):null}.bind(r,o,t):t&&\"added\"==t.status?r.mergeableMove={child:o,item:t}:t&&console.warn(\"Unsupported item.status\",t.status)),void 0!==r&&l(r))},{});return{push:l,undoCommand:a(o.undoLabel,1,n),redoCommand:a(o.redoLabel,2,r),reset:function(){n.removeAll(),r.removeAll()},setModeOnce:function(){d=2,s(n)},setModeMerge:function(){d=3,s(n)},setModeNormal:function(){d=0,s(n)},setModeIgnore:function(){d=1,s(n)},setUndoActionMaker:function(e){v=e},dispose:function(){g.dispose()}}};module.exports=undoManager;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuZG9tYW5hZ2VyLmpzIl0sIm5hbWVzIjpbImtvIiwicmVxdWlyZSIsInJlYWN0b3IiLCJjb25zb2xlIiwidW5kb01hbmFnZXIiLCJtb2RlbCIsIm9wdGlvbnMiLCJsYXN0UHVzaGVkU3RhY2siLCJ1bmRvU3RhY2siLCJvYnNlcnZhYmxlQXJyYXkiLCJyZWRvU3RhY2siLCJzdGF0ZSIsIm1vZGUiLCJkZWZhdWx0T3B0aW9ucyIsImxldmVscyIsInVuZG9MYWJlbCIsInJlZG9MYWJlbCIsInV0aWxzIiwiZXh0ZW5kIiwiX3B1c2giLCJhY3Rpb24iLCJfcHVzaEludCIsInJlbW92ZUFsbCIsIm15U3RhY2siLCJsZW5ndGgiLCJtZXJnZWQiLCJwcmV2IiwibmV3QWN0aW9uIiwibWVyZ2VkQWN0aW9uIiwic2hpZnQiLCJwdXNoIiwiX3hkb0NvbW1hbmQiLCJsYWJlbCIsIndvcmtTdGF0ZSIsInN0YWNrIiwibmFtZSIsImNvbXB1dGVkIiwidW53cmFwT2JzZXJ2YWJsZSIsInJlcGxhY2UiLCJlbmFibGVkIiwiZXhlY3V0ZSIsInBvcCIsInByZXZTdGF0ZSIsIm9sZE1vZGUiLCJfcmVtb3ZlTWVyZ2VkQWN0aW9uIiwiX2NvbWJpbmVkRnVuY3Rpb24iLCJmaXJzdCIsInNlY29uZCIsInJlcyIsImYxIiwiZjIiLCJiaW5kIiwidW5kZWZpbmVkIiwiZXhlY3V0ZVVuZG9BY3Rpb24iLCJjaGlsZCIsInZhbHVlIiwiaXRlbSIsInN0YXR1cyIsInNwbGljZSIsImluZGV4IiwibWFrZVVuZG9BY3Rpb24iLCJ1bmRvRnVuYyIsInBhcmVudHMiLCJvbGRWYWwiLCJ3YXRjaCIsImRlcHRoIiwib2xkVmFsdWVzIiwibXV0YWJsZSIsInRhZ0ZpZWxkcyIsImFjdCIsIm1lcmdlTWUiLCJ0aGlzIiwib2xkQ2hpbGQiLCJvbGRJdGVtIiwibWVyZ2VhYmxlQWN0aW9uIiwibWVyZ2VhYmxlTW92ZSIsIndhcm4iLCJ1bmRvQ29tbWFuZCIsInJlZG9Db21tYW5kIiwicmVzZXQiLCJzZXRNb2RlT25jZSIsInNldE1vZGVNZXJnZSIsInNldE1vZGVOb3JtYWwiLCJzZXRNb2RlSWdub3JlIiwic2V0VW5kb0FjdGlvbk1ha2VyIiwibWFrZXIiLCJkaXNwb3NlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsYUFFQSxJQUFJQSxHQUFLQyxRQUFRLFlBQ2JDLFFBQVVELFFBQVEsc0JBQ2xCRSxRQUFVRixRQUFRLFdBV2xCRyxZQUFjLFNBQVVDLEVBQU9DLEdBQ2pDLElBRUlDLEVBRkFDLEVBQVlSLEdBQUdTLGtCQUNmQyxFQUFZVixHQUFHUyxrQkFLZkUsRUFIYyxFQVNkQyxFQUpjLEVBTWRDLEdBQ0ZDLE9BQVEsSUFDUkMsVUFBVyxpQkFDWEMsVUFBVyxrQkFJWFYsRUFEb0IsaUJBQVhBLEVBQ0NOLEdBQUdpQixNQUFNQyxPQUFPTCxFQUFnQlAsR0FFaENPLEVBR1osSUFBSU0sRUFBUSxTQUFVQyxHQXRCRixHQXdCZFQsRUFDRlUsRUFBU0QsRUFBUVYsR0F4QkQsR0F5QlBDLEVBQ1RVLEVBQVNELEVBQVFaLEdBNUJILEdBNkJMRyxJQUNUVSxFQUFTRCxFQUFRWixHQUNqQkUsRUFBVVksY0FVVkQsRUFBVyxTQUFVRCxFQUFRRyxHQUkvQixHQUFJQSxJQUFVQyxPQUFTLEVBQUcsQ0FDeEIsSUFBSUMsR0FYa0JDLEVBV0NILElBQVVBLElBQVVDLE9BQVMsR0FYeEJHLEVBVzRCUCxPQVZ6QixJQUF0Qk0sRUFBS0UsYUFDUEYsRUFBS0UsYUFBYUQsR0FDYixNQVVaLEdBQWUsT0FBWEYsRUFFRixZQURBRixJQUFVQSxJQUFVQyxPQUFTLEdBQUtDLEdBZHhCLElBQVVDLEVBQU1DLEVBa0IxQkosSUFBVUMsUUFBVWxCLEVBQVFRLFFBQVFTLEVBQVFNLFFBQ2hEdEIsRUFBa0JnQixFQUNsQkEsRUFBUU8sS0FBS1YsSUFHWFcsRUFBYyxTQUFTQyxFQUFPQyxFQUFXQyxHQUMzQyxPQUNFQyxLQUFNbkMsR0FBR29DLFNBQVMsV0FDaEIsT0FBT3BDLEdBQUdpQixNQUFNb0IsaUJBQWlCTCxHQUFPTSxRQUFRLFVBQVdKLElBQVFWLFVBRXJFZSxRQUFTdkMsR0FBR29DLFNBQVMsV0FDbkIsT0FBMEIsSUFBbkJGLElBQVFWLFNBRWpCZ0IsUUFBUyxXQUNQLElBQUlwQixFQUFTYyxFQUFNTyxNQUNuQixHQUFJckIsRUFBUSxDQUNWLElBQUlzQixFQUFZL0IsRUFDaEJBLEVBQVFzQixFQUNSLElBQUlVLEVBQVUvQixFQUNkQSxFQWhFUyxFQWtFVFEsSUFFQXdCLEVBQW9CckMsR0FDcEJLLEVBQU8rQixFQUNQaEMsRUFBUStCLEVBRVYsT0FBTyxLQUtURSxFQUFzQixTQUFTckIsR0FDakMsUUFBc0IsSUFBWEEsRUFBd0IsS0FBTSxrRUFFckNBLElBQVVDLE9BQVMsUUFBNkQsSUFBakRELElBQVVBLElBQVVDLE9BQVMsR0FBR0kscUJBRTFETCxJQUFVQSxJQUFVQyxPQUFTLEdBQUdJLGNBSXZDaUIsRUFBb0IsU0FBU0MsRUFBT0MsR0FDdEMsSUFBSUMsRUFBTSxTQUFVQyxFQUFJQyxHQUN0QkQsSUFDQUMsS0FDQ0MsVUFBS0MsRUFBV04sRUFBT0MsR0FJMUIsWUFIa0MsSUFBdkJELEVBQU1sQixlQUNmb0IsRUFBSXBCLGFBQWVrQixFQUFNbEIsY0FFcEJvQixHQUdMSyxFQUFvQixTQUFTQyxFQUFPQyxFQUFPQyxHQUU3QyxRQUFxQixJQUFWRCxFQUNURCxFQUFNQyxPQUNELENBQUEsSUFBSUMsRUFTVCxLQUFNLHdEQVJOLEdBQW1CLFdBQWZBLEVBQUtDLE9BQ1BILEVBQU1JLE9BQU9GLEVBQUtHLE1BQU8sRUFBR0gsRUFBS0QsV0FDNUIsQ0FBQSxHQUFtQixTQUFmQyxFQUFLQyxPQUdkLEtBQU0sNEJBQTRCRCxFQUFLQyxPQUZ2Q0gsRUFBTUksT0FBT0YsRUFBS0csTUFBTyxNQWEzQkMsRUFKd0IsU0FBU0MsRUFBVUMsRUFBU1IsRUFBT1MsRUFBUVAsR0FDckUsT0FBT0ssRUFBU1YsVUFBS0MsRUFBV0UsRUFBT1MsRUFBUVAsSUF3RTdDUixHQUQwQixtQkFBWDlDLFFBQXdCQSxRQUFVRixHQUFHZ0UsT0FDeEMzRCxHQUpPNEQsT0FBUSxFQUFHQyxVQUFXLEVBQUdDLFNBQVMsRUFBcUNDLFdBQVcsR0EvRHRGLFNBQVNOLEVBQVNSLEVBQU9FLEdBRTFDLElBQUlPLE9BQW1DLElBQW5CVCxFQUFNWSxVQUEyQlosRUFBTVksVUFBVSxRQUFLZCxFQUN0RWlCLEVBQU1ULEVBQWVQLEVBQW1CUyxFQUFTUixFQUFPUyxFQUFRUCxHQTdIcEQsR0ErSFo1QyxJQTdIVyxHQStIWEEsT0FFaUIsSUFBUnlELElBQ1RBLEVBQUl6QyxhQUFlLFNBQVNELEdBQzFCLFlBQWlDLElBQXRCQSxFQUFVMkMsU0FBMkIzQyxFQUFVMkMsUUFDakR6QixFQUFrQmxCLEVBQVc0QyxNQUN4QixNQUVoQkYsRUFBSUMsU0FBVSxRQUdHLElBQVJELElBQ0xmLEVBQU1ZLFdBNUlBLEdBNElhdEQsSUFDckJ5RCxFQUFJekMsYUFBZSxTQUFTNEMsRUFBVUMsRUFBUzlDLEdBQzdDLE1BQXdDLGlCQUE3QkEsRUFBVStDLGlCQUErQkYsR0FBWTdDLEVBQVUrQyxnQkFBZ0JwQixNQUVqRmlCLEtBQ0ssTUFDZHBCLEtBQUtrQixFQUFLZixFQUFPRSxHQUNuQmEsRUFBSUssaUJBQW9CcEIsTUFBT0EsRUFBT0UsS0FBTUEsSUFRMUNBLEdBQXVCLFdBQWZBLEVBQUtDLE9BR2ZZLEVBQUl6QyxhQUFlLFNBQVM0QyxFQUFVQyxFQUFTOUMsR0FJN0MsTUFBc0MsaUJBQTNCQSxFQUFVZ0QsZUFBNkJGLEVBQVFsQixPQUFTNUIsRUFBVWdELGNBQWNuQixLQUFLRCxNQUd2RlYsRUFBa0JsQixFQUFXNEMsTUFLL0IsTUFDUHBCLEtBQUtrQixFQUFLZixFQUFPRSxHQUNWQSxHQUF1QixTQUFmQSxFQUFLQyxPQUd0QlksRUFBSU0sZUFBa0JyQixNQUFPQSxFQUFPRSxLQUFNQSxHQUNqQ0EsR0FDVHJELFFBQVF5RSxLQUFLLDBCQUEyQnBCLEVBQUtDLGNBSWhDLElBQVJZLEdBQXFCbEQsRUFBTWtELFNBU3hDLE9BQ0V2QyxLQUFNWCxFQUNOMEQsWUFBYTlDLEVBQVl6QixFQUFRUyxVQXRNZixFQXNNeUNQLEdBQzNEc0UsWUFBYS9DLEVBQVl6QixFQUFRVSxVQXRNZixFQXNNeUNOLEdBQzNEcUUsTUFBTyxXQUFhdkUsRUFBVWMsWUFBYVosRUFBVVksYUFFckQwRCxZQUFhLFdBQWFwRSxFQXBNWixFQW9NOEJnQyxFQUFvQnBDLElBQ2hFeUUsYUFBYyxXQUFhckUsRUFwTVosRUFvTStCZ0MsRUFBb0JwQyxJQUNsRTBFLGNBQWUsV0FBYXRFLEVBeE1aLEVBd01nQ2dDLEVBQW9CcEMsSUFDcEUyRSxjQUFlLFdBQWF2RSxFQXhNWixFQXdNZ0NnQyxFQUFvQnBDLElBQ3BFNEUsbUJBQW9CLFNBQVNDLEdBQVN6QixFQUFpQnlCLEdBQ3ZEQyxRQUFTLFdBQW9FdEMsRUFBSXNDLGFBSXJGQyxPQUFPQyxRQUFVcEYiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvdW5kb21hbmFnZXIvdW5kb21hbmFnZXIuanMifQ==",
"\"use strict\";var listener,watchEnabled,ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),console=require('console-browserify'),_reference=function(e,n){for(var t,r,o=0,a=e;o<n.length;)switch(n.charAt(o)){case\"(\":\")\"==n.charAt(o+1)&&(a=a()),o+=2;break;case\"[\":r=n.indexOf(\"]\",o),a=a[n.substring(o+1,r)],o=r+1;break;case\".\":-1==(t=n.indexOf(\"(\",o))&&(t=n.length),-1==(r=n.indexOf(\"[\",o))&&(r=n.length),r=Math.min(t,r),a=a[n.substring(o+1,r)],o=r}return a},_getPath=function(e,n){for(var t,r=\"\",o=0;o<=e.length;o++)if(t=o<e.length?e[o]:n,ko.isObservable(t)&&(r+=\"()\"),void 0!==t._fieldName)r+=\".\"+t._fieldName;else{if(!(o>0&&\"function\"==typeof e[o-1].pop))throw console.error(\"Unexpected parent with no _fieldName and no parent array\",o,e),\"Unexpected parent with no _fieldName and no parent array\";var a=ko.isObservable(e[o-1])?ko.utils.peekObservable(e[o-1]):e[o-1],i=ko.utils.arrayIndexOf(a,t);if(-1==i)throw console.error(\"Unexpected object not found in parent array\",a,t,o,e.length,ko.toJS(a),ko.utils.unwrapObservable(t)),\"Unexpected object not found in parent array\";r+=\"[\"+i+\"]\"}return r},makeDereferencedUndoAction=function(e,n,t,r,o){e(_reference(n,t),r,o)},_setListener=function(e){listener=e},makeUndoActionDereferenced=function(e,n,t,r,o,a){try{var i=_getPath(t,r);if(\"object\"!=typeof o&&\"function\"!=typeof o||(o=ko.toJS(o)),void 0!==a&&(\"object\"==typeof a.value||\"function\"==typeof a.value))a=ko.toJS(a);if(void 0!==listener)try{listener(i,r,o,a)}catch(e){console.log(\"Undoserializer ignoring exception in listener callback\")}return makeDereferencedUndoAction.bind(void 0,n,e,i,o,a)}catch(e){console.error(\"Exception processing undo\",e,t,r,a)}},_watchEnabled=function(e){if(void 0===e)return watchEnabled;watchEnabled=e};module.exports={dereference:_getPath,reference:_reference,makeUndoAction:makeUndoActionDereferenced,setListener:_setListener,watchEnabled:_watchEnabled};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuZG9zZXJpYWxpemVyLmpzIl0sIm5hbWVzIjpbImxpc3RlbmVyIiwid2F0Y2hFbmFibGVkIiwia28iLCJyZXF1aXJlIiwiY29uc29sZSIsIl9yZWZlcmVuY2UiLCJtb2RlbCIsInBhdGgiLCJwMSIsInAyIiwicCIsIm0iLCJsZW5ndGgiLCJjaGFyQXQiLCJpbmRleE9mIiwic3Vic3RyaW5nIiwiTWF0aCIsIm1pbiIsIl9nZXRQYXRoIiwicGFyZW50cyIsImNoaWxkIiwiayIsImlzT2JzZXJ2YWJsZSIsIl9maWVsZE5hbWUiLCJwb3AiLCJlcnJvciIsInBhcmVudEFycmF5IiwidXRpbHMiLCJwZWVrT2JzZXJ2YWJsZSIsInBvcyIsImFycmF5SW5kZXhPZiIsInRvSlMiLCJ1bndyYXBPYnNlcnZhYmxlIiwibWFrZURlcmVmZXJlbmNlZFVuZG9BY3Rpb24iLCJ1bmRvRnVuYyIsInZhbHVlIiwiaXRlbSIsIl9zZXRMaXN0ZW5lciIsImxpc3RlbmZ1bmMiLCJtYWtlVW5kb0FjdGlvbkRlcmVmZXJlbmNlZCIsIm9sZFZhbCIsImUiLCJsb2ciLCJiaW5kIiwidW5kZWZpbmVkIiwiX3dhdGNoRW5hYmxlZCIsIm5ld1ZhbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJkZXJlZmVyZW5jZSIsInJlZmVyZW5jZSIsIm1ha2VVbmRvQWN0aW9uIiwic2V0TGlzdGVuZXIiXSwibWFwcGluZ3MiOiJBQUFBLGFBQ0EsSUF1RUlBLFNBaUNBQyxhQXhHQUMsR0FBS0MsUUFBUSxZQUNiQyxRQUFVRCxRQUFRLFdBSWxCRSxXQUFhLFNBQVNDLEVBQU9DLEdBSS9CLElBSEEsSUFDSUMsRUFBSUMsRUFESkMsRUFBSSxFQUVKQyxFQUFJTCxFQUNESSxFQUFJSCxFQUFLSyxRQUNkLE9BQVFMLEVBQUtNLE9BQU9ILElBQ2xCLElBQUssSUFDdUIsS0FBdEJILEVBQUtNLE9BQU9ILEVBQUksS0FDbEJDLEVBQUlBLEtBSU5ELEdBQUssRUFDTCxNQUNGLElBQUssSUFDSEQsRUFBS0YsRUFBS08sUUFBUSxJQUFLSixHQUN2QkMsRUFBSUEsRUFBRUosRUFBS1EsVUFBVUwsRUFBSSxFQUFHRCxJQUM1QkMsRUFBSUQsRUFBSyxFQUNULE1BQ0YsSUFBSyxLQUVRLElBRFhELEVBQUtELEVBQUtPLFFBQVEsSUFBS0osTUFDVEYsRUFBS0QsRUFBS0ssU0FFYixJQURYSCxFQUFLRixFQUFLTyxRQUFRLElBQUtKLE1BQ1RELEVBQUtGLEVBQUtLLFFBQ3hCSCxFQUFLTyxLQUFLQyxJQUFJVCxFQUFJQyxHQUNsQkUsRUFBSUEsRUFBRUosRUFBS1EsVUFBVUwsRUFBSSxFQUFHRCxJQUM1QkMsRUFBSUQsRUFNVixPQUFPRSxHQUdMTyxTQUFXLFNBQVNDLEVBQVNDLEdBRy9CLElBRkEsSUFDSVYsRUFEQUgsRUFBTyxHQUVGYyxFQUFJLEVBQUdBLEdBQUtGLEVBQVFQLE9BQVFTLElBR25DLEdBRkFYLEVBQUlXLEVBQUlGLEVBQVFQLE9BQVNPLEVBQVFFLEdBQUtELEVBQ2xDbEIsR0FBR29CLGFBQWFaLEtBQUlILEdBQVEsV0FDSixJQUFqQkcsRUFBRWEsV0FDWGhCLEdBQVEsSUFBTUcsRUFBRWEsZUFDWCxDQUFBLEtBQUlGLEVBQUksR0FBa0MsbUJBQXRCRixFQUFRRSxFQUFJLEdBQUdHLEtBWXhDLE1BREFwQixRQUFRcUIsTUFBTSwyREFBNERKLEVBQUdGLEdBQ3ZFLDJEQVhOLElBQUlPLEVBQWN4QixHQUFHb0IsYUFBYUgsRUFBUUUsRUFBSSxJQUFNbkIsR0FBR3lCLE1BQU1DLGVBQWVULEVBQVFFLEVBQUksSUFBTUYsRUFBUUUsRUFBSSxHQUN0R1EsRUFBTTNCLEdBQUd5QixNQUFNRyxhQUFhSixFQUFhaEIsR0FDN0MsSUFBWSxHQUFSbUIsRUFLRixNQURBekIsUUFBUXFCLE1BQU0sOENBQStDQyxFQUFhaEIsRUFBR1csRUFBR0YsRUFBUVAsT0FBUVYsR0FBRzZCLEtBQUtMLEdBQWN4QixHQUFHeUIsTUFBTUssaUJBQWlCdEIsSUFDMUksOENBSk5ILEdBQVEsSUFBTXNCLEVBQU0sSUFXMUIsT0FBT3RCLEdBR0wwQiwyQkFBNkIsU0FBU0MsRUFBVTVCLEVBQU9DLEVBQU00QixFQUFPQyxHQUV0RUYsRUFEWTdCLFdBQVdDLEVBQU9DLEdBQ2Q0QixFQUFPQyxJQUtyQkMsYUFBZSxTQUFTQyxHQUMxQnRDLFNBQVdzQyxHQUlUQywyQkFBNkIsU0FBU2pDLEVBQU80QixFQUFVZixFQUFTQyxFQUFPb0IsRUFBUUosR0FDakYsSUFDRSxJQUFJN0IsRUFBT1csU0FBU0MsRUFBU0MsR0FJN0IsR0FEc0IsaUJBQVhvQixHQUF5QyxtQkFBWEEsSUFBdUJBLEVBQVN0QyxHQUFHNkIsS0FBS1MsU0FDN0QsSUFBVEosSUFBK0MsaUJBQWZBLEVBQUtELE9BQTRDLG1CQUFmQyxFQUFLRCxPQUVoRkMsRUFEY2xDLEdBQUc2QixLQUFLSyxHQUl4QixRQUF3QixJQUFicEMsU0FDVCxJQUNFQSxTQUFTTyxFQUFNYSxFQUFPb0IsRUFBUUosR0FDOUIsTUFBT0ssR0FDUHJDLFFBQVFzQyxJQUFJLDBEQUloQixPQUFPVCwyQkFBMkJVLFVBQUtDLEVBQVdWLEVBQVU1QixFQUFPQyxFQUFNaUMsRUFBUUosR0FDakYsTUFBT0ssR0FFUHJDLFFBQVFxQixNQUFNLDRCQUE2QmdCLEVBQUd0QixFQUFTQyxFQUFPZ0IsS0FLOURTLGNBQWdCLFNBQVNDLEdBQzNCLFFBQXNCLElBQVhBLEVBR1QsT0FBTzdDLGFBRlBBLGFBQWU2QyxHQUtuQkMsT0FBT0MsU0FDTEMsWUFBYS9CLFNBQ2JnQyxVQUFXN0MsV0FDWDhDLGVBQWdCWiwyQkFDaEJhLFlBQWFmLGFBQ2JwQyxhQUFjNEMiLCJmaWxlIjoiL2hvbWUvYnVyZXMvbW9zYWljby9zcmMvanMvdW5kb21hbmFnZXIvdW5kb3NlcmlhbGl6ZXIuanMifQ==",
"\"use strict\";var $=(typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null),ko=(typeof window !== \"undefined\" ? window['ko'] : typeof global !== \"undefined\" ? global['ko'] : null),console=require('console-browserify'),performanceAwareCaller=require(\"./timed-call.js\").timedCall,toastr=require(\"toastr\");function initializeEditor(e,o,t,l){var r={galleryRecent:ko.observableArray([]).extend({paging:16}),galleryRemote:ko.observableArray([]).extend({paging:16}),selectedBlock:ko.observable(null),selectedItem:ko.observable(null),selectedTool:ko.observable(0),selectedImageTab:ko.observable(0),dragging:ko.observable(!1),draggingImage:ko.observable(!1),galleryLoaded:ko.observable(!1),showPreviewFrame:ko.observable(!1),previewMode:ko.observable(\"mobile\"),showToolbox:ko.observable(!0),showTheme:ko.observable(!1),showGallery:ko.observable(!1),debug:ko.observable(!1),contentListeners:ko.observable(0),logoPath:\"dist/img/mosaico32.png\",logoUrl:\".\",logoAlt:\"mosaico\"};return r.content=e,r.blockDefs=o,r.notifier=toastr,r.tt=function(e,o){if(void 0!==o)for(var t in o)o.hasOwnProperty(t)&&(e=e.replace(new RegExp(\"__\"+t+\"__\",\"g\"),o[t]));return e},r.t=r.tt,r.ut=function(e,o){return o},r.templatePath=t,r.remoteUrlProcessor=function(e){return e},r.remoteFileProcessor=function(e){return void 0!==e.url&&(e.url=r.remoteUrlProcessor(e.url)),void 0!==e.thumbnailUrl&&(e.thumbnailUrl=r.remoteUrlProcessor(e.thumbnailUrl)),e},r.loadGallery=function(){r.galleryLoaded(\"loading\");var e=l||\"/upload/\";$.getJSON(e,function(e){for(var o=0;o<e.files.length;o++)e.files[o]=r.remoteFileProcessor(e.files[o]);r.galleryLoaded(e.files.length),r.galleryRemote(e.files.reverse())}).fail(function(){r.galleryLoaded(!1),r.notifier.error(r.t(\"Unexpected error listing files\"))})},r.fileToImage=function(e,o,t){return e.url},r.removeBlock=function(e,o){ko.utils.unwrapObservable(r.selectedBlock)==ko.utils.unwrapObservable(e)&&r.selectBlock(null,!0);var t=o.blocks.remove(e);return r.notifier.info(r.t(\"Block removed: use undo button to restore it...\")),t},r.duplicateBlock=function(e,o){var t=ko.utils.unwrapObservable(e),l=ko.toJS(ko.utils.unwrapObservable(o.blocks)[t]);void 0!==l.id&&(l.id=\"\"),o.blocks.splice(t+1,0,l)},r.moveBlock=function(e,o,t){var l=ko.utils.unwrapObservable(e),n=ko.utils.unwrapObservable(o.blocks);if(t&&l>0||!t&&l<n.length-1){var a=l+(t?-1:1),c=n[a];r.startMultiple(),o.blocks.splice(a,1),o.blocks.splice(l,0,c),r.stopMultiple()}},r.loadDefaultBlocks=function(){var e=ko.toJS(r.content().mainBlocks);e.blocks=[];for(var o=ko.utils.unwrapObservable(r.blockDefs),t=0;t<o.length;t++){var l=ko.toJS(o[t]);l.id=\"block_\"+t,e.blocks.push(l)}performanceAwareCaller(\"setMainBlocks\",r.content().mainBlocks._wrap.bind(r.content().mainBlocks,e))},r.addImage=function(e){var o=$(\"#main-wysiwyg-area .selectable-img.selecteditem\");return 1==o.length&&\"object\"==typeof e&&void 0!==e.url&&(ko.contextFor(o[0])._src(e.url),!0)},r.addBlock=function(e,o){var t,l,n=r.selectedBlock();if(null!==n)for(var a=r.content().mainBlocks().blocks().length-1;a>=0;a--)if(r.content().mainBlocks().blocks()[a]()==n){t=a;break}void 0!==t?(l=t+1,r.content().mainBlocks().blocks.splice(l,0,e),r.notifier.info(r.t(\"New block added after the selected one (__pos__)\",{pos:l}))):(r.content().mainBlocks().blocks.push(e),l=r.content().mainBlocks().blocks().length-1,r.notifier.info(r.t(\"New block added at the model bottom (__pos__)\",{pos:l})));var c=r.content().mainBlocks().blocks()[l]();return r.selectBlock(c,!0),!1},r.findObjectsOfType=function(e,o){var t=[],l=ko.utils.unwrapObservable(e);for(var r in l)if(l.hasOwnProperty(r)){var n=ko.utils.unwrapObservable(l[r]);if(r.match(/Blocks$/))for(var a=ko.utils.unwrapObservable(n.blocks),c=0;c<a.length;c++){var i=ko.utils.unwrapObservable(a[c]);null!==o&&ko.utils.unwrapObservable(i.type)!=o||t.push(i)}else\"object\"==typeof n&&null!==n&&(null!==o&&ko.utils.unwrapObservable(n.type)!=o||t.push(n))}return t},r.placeholderHelper={element:function(e){return $(e[0].outerHTML).removeClass(\"ui-draggable\").addClass(\"sortable-placeholder\").css(\"display\",\"block\").css(\"position\",\"relative\").css(\"width\",\"100%\").css(\"height\",\"auto\").css(\"opacity\",\".8\")[0]},update:function(e,o){}},r.startMultiple=function(){void 0!==r.setUndoModeMerge&&r.setUndoModeMerge()},r.stopMultiple=function(){void 0!==r.setUndoModeOnce&&r.setUndoModeOnce()},r.localGlobalSwitch=function(e,o){return e(null===e()?o():null),!1},r.selectItem=function(e,o,t){var l=ko.utils.peekObservable(e);return void 0!==t&&r.selectBlock(t,!1,!0),l!=o&&(e(o),null!==o&&0===r.selectedTool()&&r.selectedTool(1)),!1}.bind(r,r.selectedItem),r.isSelectedItem=function(e){return r.selectedItem()==e},r.selectBlock=function(e,o,t,l){var n=ko.utils.peekObservable(e);l||r.selectItem(null),n!=o&&(e(o),r.showGallery(!1),null===o||t||0!==r.selectedTool()||r.selectedTool(1))}.bind(r,r.selectedBlock),r.countSubscriptions=function(e,o){var t=0;for(var l in e)if(e.hasOwnProperty(l)){var n=e[l];if(ko.isObservable(n)&&(void 0!==n._defaultComputed&&(void 0!==o&&console.log(o+\"/\"+l+\"/_\",n._defaultComputed.getSubscriptionsCount()),t+=n._defaultComputed.getSubscriptionsCount()),void 0!==o&&console.log(o+\"/\"+l+\"/-\",n.getSubscriptionsCount()),t+=n.getSubscriptionsCount(),n=ko.utils.unwrapObservable(n)),\"object\"==typeof n&&null!==n){var a=r.countSubscriptions(n,void 0!==o?o+\"/\"+l+\"@\":void 0);void 0!==o&&console.log(o+\"/\"+l+\"@\",a),t+=a}}return t},r.loopSubscriptionsCount=function(){var e=r.countSubscriptions(r.content());global.document.getElementById(\"subscriptionsCount\").innerHTML=e,global.setTimeout(r.loopSubscriptionsCount,1e3)},r.export=function(){return performanceAwareCaller(\"exportHTML\",r.exportHTML)},r.exportHTML=function(){var e=\"exportframe\";$(\"body\").append('<iframe id=\"'+e+'\" data-bind=\"bindIframe: $data\"></iframe>');var o=global.document.getElementById(e);ko.applyBindings(r,o),ko.cleanNode(o),r.inline&&r.inline(o.contentWindow.document);var t=o.contentWindow.document.doctype,l=\"<!DOCTYPE \"+t.name+(t.publicId?' PUBLIC \"'+t.publicId+'\"':\"\")+(!t.publicId&&t.systemId?\" SYSTEM\":\"\")+(t.systemId?' \"'+t.systemId+'\"':\"\")+\">\"+\"\\n\"+o.contentWindow.document.documentElement.outerHTML;ko.removeNode(o),l=(l=(l=(l=(l=(l=(l=(l=(l=(l=(l=l.replace(/<script ([^>]* )?type=\"text\\/html\"[^>]*>[\\s\\S]*?<\\/script>/gm,\"\")).replace(/<!-- ko ((?!--).)*? -->/g,\"\")).replace(/<!-- \\/ko -->/g,\"\")).replace(/ data-bind=\"[^\"]*\"/gm,\"\")).replace(/ data-mce-(href|src|style)=\"[^\"]*\"/gm,\"\")).replace(/ style=\"[^\"]*\"([^>]*) replaced(style=\"[^\"]*\")/gm,\"$1 $2\")).replace(/ replaced(style=\"[^\"]*\")([^>]*) style=\"[^\"]*\"/gm,\" $1$2\")).replace(/ replaced(style=\"[^\"]*\")/gm,\" $1\")).replace(/ http-equiv=\"[^\"]*\"([^>]*) replaced(http-equiv=\"[^\"]*\")/gm,\"$1 $2\")).replace(/ replaced(http-equiv=\"[^\"]*\")([^>]*) http-equiv=\"[^\"]*\"/gm,\" $1$2\")).replace(/ replaced(http-equiv=\"[^\"]*\")/gm,\" $1\");var n=(l=l.replace(/<replacedcc[^>]* condition=\"([^\"]*)\"[^>]*>([\\s\\S]*?)<\\/replacedcc>/g,function(e,o,t){var l=\"\\x3c!--[if \"+o.replace(/&amp;/,\"&\")+\"]>\";return l+=t.replace(/<!-- cc:bc:([A-Za-z:]*) -->(<\\/cc>)?<!-- cc:ac:\\1 -->/g,\"</$1>\").replace(/><\\/cc><!-- cc:sc -->/g,\"/>\").replace(/<!-- cc:bo:([A-Za-z:]*) --><cc/g,\"<$1\").replace(/^.*<!-- cc:start -->/,\"\").replace(/<!-- cc:end -->.*$/,\"\"),l+=\"<![endif]--\\x3e\"})).match(/ data-[^ =]+(=\"[^\"]+\")? /)||l.match(/ replaced([^= ]*=)/);return n&&console.warn(\"Output HTML contains unexpected data- attributes or replaced attributes\",n),l},r.exportHTMLtoTextarea=function(e){$(e).val(r.exportHTML())},r.exportJSONtoTextarea=function(e){$(e).val(r.exportJSON())},r.importJSONfromTextarea=function(e){r.importJSON($(e).val())},r.exportMetadata=function(){return ko.toJSON(r.metadata)},r.exportJSON=function(){return ko.toJSON(r.content)},r.exportJS=function(){return ko.toJS(r.content)},r.importJSON=function(e){var o=ko.utils.parseJson(e);r.content._wrap(o)},r.exportTheme=function(){var e={},o=r.content().theme(),t=function(e,o,l){for(var r in l)if(l.hasOwnProperty(r)){var n=ko.utils.unwrapObservable(l[r]);null!==n&&\"object\"==typeof n?t(r+\".\",o,n):o[e+r]=n}};t(\"\",e,o);var l=\"\";for(var n in e)e.hasOwnProperty(n)&&\"type\"!=n&&(l+=n+\": \"+e[n]+\";\\n\");return l},r.loadImage=function(e){r.galleryRecent.unshift(e),r.selectedImageTab(0)},r.dialog=function(e,o){$(e).dialog(o)},r.log=function(e,o){},r.selectedImageTab.subscribe(function(e){1==e&&!1===r.galleryLoaded()&&r.loadGallery()},r,\"change\"),r}toastr.options={closeButton:!1,debug:!1,positionClass:\"toast-bottom-full-width\",target:\"#mo-body\",onclick:null,showDuration:\"300\",hideDuration:\"1000\",timeOut:\"5000\",extendedTimeOut:\"1000\",showEasing:\"swing\",hideEasing:\"linear\",showMethod:\"fadeIn\",hideMethod:\"fadeOut\"},module.exports=initializeEditor;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpZXdtb2RlbC5qcyJdLCJuYW1lcyI6WyIkIiwicmVxdWlyZSIsImtvIiwiY29uc29sZSIsInBlcmZvcm1hbmNlQXdhcmVDYWxsZXIiLCJ0aW1lZENhbGwiLCJ0b2FzdHIiLCJpbml0aWFsaXplRWRpdG9yIiwiY29udGVudCIsImJsb2NrRGVmcyIsInRodW1iUGF0aENvbnZlcnRlciIsImdhbGxlcnlVcmwiLCJ2aWV3TW9kZWwiLCJnYWxsZXJ5UmVjZW50Iiwib2JzZXJ2YWJsZUFycmF5IiwiZXh0ZW5kIiwicGFnaW5nIiwiZ2FsbGVyeVJlbW90ZSIsInNlbGVjdGVkQmxvY2siLCJvYnNlcnZhYmxlIiwic2VsZWN0ZWRJdGVtIiwic2VsZWN0ZWRUb29sIiwic2VsZWN0ZWRJbWFnZVRhYiIsImRyYWdnaW5nIiwiZHJhZ2dpbmdJbWFnZSIsImdhbGxlcnlMb2FkZWQiLCJzaG93UHJldmlld0ZyYW1lIiwicHJldmlld01vZGUiLCJzaG93VG9vbGJveCIsInNob3dUaGVtZSIsInNob3dHYWxsZXJ5IiwiZGVidWciLCJjb250ZW50TGlzdGVuZXJzIiwibG9nb1BhdGgiLCJsb2dvVXJsIiwibG9nb0FsdCIsIm5vdGlmaWVyIiwidHQiLCJrZXkiLCJwYXJhbU9iaiIsInByb3AiLCJoYXNPd25Qcm9wZXJ0eSIsInJlcGxhY2UiLCJSZWdFeHAiLCJ0IiwidXQiLCJjYXRlZ29yeSIsInRlbXBsYXRlUGF0aCIsInJlbW90ZVVybFByb2Nlc3NvciIsInVybCIsInJlbW90ZUZpbGVQcm9jZXNzb3IiLCJmaWxlT2JqIiwidGh1bWJuYWlsVXJsIiwibG9hZEdhbGxlcnkiLCJnZXRKU09OIiwiZGF0YSIsImkiLCJmaWxlcyIsImxlbmd0aCIsInJldmVyc2UiLCJmYWlsIiwiZXJyb3IiLCJmaWxlVG9JbWFnZSIsIm9iaiIsImV2ZW50IiwidWkiLCJyZW1vdmVCbG9jayIsInBhcmVudCIsInV0aWxzIiwidW53cmFwT2JzZXJ2YWJsZSIsInNlbGVjdEJsb2NrIiwicmVzIiwiYmxvY2tzIiwicmVtb3ZlIiwiaW5mbyIsImR1cGxpY2F0ZUJsb2NrIiwiaW5kZXgiLCJpZHgiLCJ1bndyYXBwZWQiLCJ0b0pTIiwiaWQiLCJzcGxpY2UiLCJtb3ZlQmxvY2siLCJ1cCIsInBhcmVudEJsb2NrcyIsImRlc3RJbmRleCIsImRlc3RCbG9jayIsInN0YXJ0TXVsdGlwbGUiLCJzdG9wTXVsdGlwbGUiLCJsb2FkRGVmYXVsdEJsb2NrcyIsIm1haW5CbG9ja3MiLCJpbnB1dCIsInB1c2giLCJfd3JhcCIsImJpbmQiLCJhZGRJbWFnZSIsImltZyIsInNlbGVjdGVkSW1nIiwiY29udGV4dEZvciIsIl9zcmMiLCJhZGRCbG9jayIsImZvdW5kIiwicG9zIiwic2VsZWN0ZWQiLCJhZGRlZCIsImZpbmRPYmplY3RzT2ZUeXBlIiwidHlwZSIsInZhbCIsIm1hdGNoIiwiY29udGVudHMiLCJjIiwicGxhY2Vob2xkZXJIZWxwZXIiLCJlbGVtZW50IiwiY3VycmVudEl0ZW0iLCJvdXRlckhUTUwiLCJyZW1vdmVDbGFzcyIsImFkZENsYXNzIiwiY3NzIiwidXBkYXRlIiwiY29udGFpbmVyIiwicCIsInNldFVuZG9Nb2RlTWVyZ2UiLCJzZXRVbmRvTW9kZU9uY2UiLCJsb2NhbEdsb2JhbFN3aXRjaCIsImdsb2JhbFByb3AiLCJzZWxlY3RJdGVtIiwidmFsdWVBY2Nlc3NvciIsIml0ZW0iLCJibG9jayIsInBlZWtPYnNlcnZhYmxlIiwiaXNTZWxlY3RlZEl0ZW0iLCJkb05vdFNlbGVjdCIsImRvTm90VW5zZWxlY3RJdGVtIiwiY291bnRTdWJzY3JpcHRpb25zIiwibW9kZWwiLCJpc09ic2VydmFibGUiLCJfZGVmYXVsdENvbXB1dGVkIiwibG9nIiwiZ2V0U3Vic2NyaXB0aW9uc0NvdW50IiwidG90IiwidW5kZWZpbmVkIiwibG9vcFN1YnNjcmlwdGlvbnNDb3VudCIsImNvdW50IiwiZ2xvYmFsIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImlubmVySFRNTCIsInNldFRpbWVvdXQiLCJleHBvcnQiLCJleHBvcnRIVE1MIiwiYXBwZW5kIiwiZnJhbWVFbCIsImFwcGx5QmluZGluZ3MiLCJjbGVhbk5vZGUiLCJpbmxpbmUiLCJjb250ZW50V2luZG93Iiwibm9kZSIsImRvY3R5cGUiLCJuYW1lIiwicHVibGljSWQiLCJzeXN0ZW1JZCIsImRvY3VtZW50RWxlbWVudCIsInJlbW92ZU5vZGUiLCJ0cmFzaCIsImNvbmRpdGlvbiIsImJvZHkiLCJkZCIsIndhcm4iLCJleHBvcnRIVE1MdG9UZXh0YXJlYSIsInRleHRhcmVhaWQiLCJleHBvcnRKU09OdG9UZXh0YXJlYSIsImV4cG9ydEpTT04iLCJpbXBvcnRKU09OZnJvbVRleHRhcmVhIiwiaW1wb3J0SlNPTiIsImV4cG9ydE1ldGFkYXRhIiwidG9KU09OIiwibWV0YWRhdGEiLCJleHBvcnRKUyIsImpzb24iLCJwYXJzZUpzb24iLCJleHBvcnRUaGVtZSIsImZsYXQiLCJtb2QiLCJ0aGVtZSIsIl9leHBvcnQiLCJwcmVmaXgiLCJhIiwib3V0cHV0IiwibG9hZEltYWdlIiwidW5zaGlmdCIsImRpYWxvZyIsInNlbGVjdG9yIiwib3B0aW9ucyIsIm1zZyIsInN1YnNjcmliZSIsIm5ld1ZhbHVlIiwiY2xvc2VCdXR0b24iLCJwb3NpdGlvbkNsYXNzIiwidGFyZ2V0Iiwib25jbGljayIsInNob3dEdXJhdGlvbiIsImhpZGVEdXJhdGlvbiIsInRpbWVPdXQiLCJleHRlbmRlZFRpbWVPdXQiLCJzaG93RWFzaW5nIiwiaGlkZUVhc2luZyIsInNob3dNZXRob2QiLCJoaWRlTWV0aG9kIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsYUFHQSxJQUFJQSxFQUFJQyxRQUFRLFVBQ1pDLEdBQUtELFFBQVEsWUFDYkUsUUFBVUYsUUFBUSxXQUNsQkcsdUJBQXlCSCxRQUFRLG1CQUFtQkksVUFFcERDLE9BQVNMLFFBQVEsVUE0R3JCLFNBQVNNLGlCQUFpQkMsRUFBU0MsRUFBV0MsRUFBb0JDLEdBRWhFLElBQUlDLEdBQ0ZDLGNBQWVYLEdBQUdZLG9CQUFvQkMsUUFD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"
]
}