From f037c478199de13bad41c4816a03b2c7b7a09363 Mon Sep 17 00:00:00 2001 From: zhu Date: Thu, 9 Mar 2023 10:50:12 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- erupt-extra/erupt-flow/README.md | 205 + ...346\210\252\345\233\27620230308172610.png" | Bin 0 -> 72897 bytes ...346\210\252\345\233\27620230308172653.png" | Bin 0 -> 38712 bytes ...346\210\252\345\233\27620230308172708.png" | Bin 0 -> 66883 bytes ...346\210\252\345\233\27620230308172722.png" | Bin 0 -> 42894 bytes ...346\210\252\345\233\27620230308172733.png" | Bin 0 -> 68316 bytes ...346\210\252\345\233\27620230308172751.png" | Bin 0 -> 17341 bytes ...346\210\252\345\233\27620230308172813.png" | Bin 0 -> 42192 bytes ...346\210\252\345\233\27620230308172823.png" | Bin 0 -> 27769 bytes ...346\210\252\345\233\27620230308172832.png" | Bin 0 -> 18953 bytes erupt-extra/erupt-flow/img/def.png | Bin 0 -> 48817 bytes erupt-extra/erupt-flow/img/execution.jpg | Bin 0 -> 33789 bytes erupt-extra/erupt-flow/img/hi.png | Bin 0 -> 2448 bytes erupt-extra/erupt-flow/img/inst.png | Bin 0 -> 31760 bytes erupt-extra/erupt-flow/img/node.png | Bin 0 -> 40542 bytes erupt-extra/erupt-flow/img/ru.png | Bin 0 -> 2438 bytes erupt-extra/erupt-flow/img/task.png | Bin 0 -> 33321 bytes erupt-extra/erupt-flow/pom.xml | 167 + .../erupt-flow/src/console/.env.development | 14 + .../erupt-flow/src/console/.env.production | 14 + erupt-extra/erupt-flow/src/console/.gitignore | 23 + erupt-extra/erupt-flow/src/console/LICENSE | 201 + erupt-extra/erupt-flow/src/console/README.md | 284 + .../erupt-flow/src/console/babel.config.js | 9 + erupt-extra/erupt-flow/src/console/image.png | Bin 0 -> 73961 bytes .../erupt-flow/src/console/package-lock.json | 13037 ++++++++ .../erupt-flow/src/console/package.json | 63 + .../erupt-flow/src/console/public/favicon.ico | Bin 0 -> 4286 bytes .../erupt-flow/src/console/public/index.html | 17 + .../modeler/diagram-viewer/images/bg.png | Bin 0 -> 3383 bytes .../diagram-viewer/images/breadcrumbs.png | Bin 0 -> 580 bytes .../diagram-viewer/images/checker-bg.png | Bin 0 -> 108 bytes .../images/deployer/blue/message_catch.png | Bin 0 -> 438 bytes .../images/deployer/business_rule.png | Bin 0 -> 227 bytes .../images/deployer/error_catch.png | Bin 0 -> 1307 bytes .../images/deployer/error_throw.png | Bin 0 -> 830 bytes .../diagram-viewer/images/deployer/manual.png | Bin 0 -> 3319 bytes .../images/deployer/message_catch.png | Bin 0 -> 410 bytes .../images/deployer/message_throw.png | Bin 0 -> 367 bytes .../images/deployer/receive.png | Bin 0 -> 344 bytes .../diagram-viewer/images/deployer/script.png | Bin 0 -> 601 bytes .../diagram-viewer/images/deployer/send.png | Bin 0 -> 361 bytes .../images/deployer/service.png | Bin 0 -> 1445 bytes .../images/deployer/signal_catch.png | Bin 0 -> 953 bytes .../images/deployer/signal_throw.png | Bin 0 -> 687 bytes .../diagram-viewer/images/deployer/timer.png | Bin 0 -> 6280 bytes .../diagram-viewer/images/deployer/user.png | Bin 0 -> 775 bytes .../public/modeler/diagram-viewer/index.html | 130 + .../modeler/diagram-viewer/js/ActivitiRest.js | 74 + .../modeler/diagram-viewer/js/ActivityImpl.js | 1 + .../public/modeler/diagram-viewer/js/Color.js | 603 + .../diagram-viewer/js/LineBreakMeasurer.js | 270 + .../modeler/diagram-viewer/js/Polyline.js | 387 + .../diagram-viewer/js/ProcessDiagramCanvas.js | 2172 ++ .../js/ProcessDiagramGenerator.js | 1087 + .../js/jquery/jquery.asyncqueue.js | 125 + .../diagram-viewer/js/jquery/jquery.js | 9266 ++++++ .../js/jquery/jquery.progressbar.js | 131 + .../modeler/diagram-viewer/js/jstools.js | 23 + .../diagram-viewer/js/raphael.2.1.1.js | 10 + .../modeler/diagram-viewer/js/raphael.js | 10 + .../diagram-viewer/js/raphael_uncompressed.js | 5815 ++++ .../modeler/diagram-viewer/js/textlayout.js | 441 + .../public/modeler/diagram-viewer/style.css | 1 + .../public/modeler/editor-app/app-cfg.js | 25 + .../console/public/modeler/editor-app/app.js | 432 + .../properties-assignment-controller.js | 321 + ...perties-condition-expression-controller.js | 58 + .../properties-custom-controllers.js | 18 + .../properties-default-controllers.js | 115 + .../properties-event-listeners-controller.js | 266 + ...operties-execution-listeners-controller.js | 326 + .../properties-fields-controller.js | 192 + .../properties-form-properties-controller.js | 276 + .../properties-in-parameters-controller.js | 158 + ...operties-message-definitions-controller.js | 137 + .../properties-message-scope-controller.js | 48 + .../properties-multiinstance-controller.js | 34 + .../properties-out-parameters-controller.js | 158 + ...roperties-sequenceflow-order-controller.js | 130 + ...roperties-signal-definitions-controller.js | 136 + .../properties-signal-scope-controller.js | 47 + .../properties-task-listeners-controller.js | 325 + .../editor-app/configuration/properties.js | 99 + .../properties/assignment-candidateGroup.html | 40 + .../assignment-display-template.html | 4 + .../properties/assignment-popup-popup.html | 53 + .../properties/assignment-popup.html | 41 + .../properties/assignment-write-template.html | 4 + .../properties/boolean-property-template.html | 4 + ...condition-expression-display-template.html | 2 + .../condition-expression-popup.html | 29 + .../condition-expression-write-template.html | 4 + .../default-value-display-template.html | 4 + .../event-listeners-display-template.html | 3 + .../properties/event-listeners-popup.html | 115 + .../event-listeners-write-template.html | 4 + .../execution-listeners-display-template.html | 3 + .../properties/execution-listeners-popup.html | 101 + .../execution-listeners-write-template.html | 4 + .../properties/feedback-popup.html | 17 + .../properties/fields-display-template.html | 3 + .../properties/fields-popup.html | 61 + .../properties/fields-write-template.html | 4 + .../form-properties-display-template.html | 3 + .../properties/form-properties-popup.html | 117 + .../form-properties-write-template.html | 4 + .../in-parameters-display-template.html | 3 + .../properties/in-parameters-popup.html | 53 + .../in-parameters-write-template.html | 4 + .../message-definitions-display-template.html | 2 + .../properties/message-definitions-popup.html | 50 + .../message-definitions-write-template.html | 3 + .../message-property-write-template.html | 4 + ...multiinstance-property-write-template.html | 8 + .../out-parameters-display-template.html | 3 + .../properties/out-parameters-popup.html | 53 + .../out-parameters-write-template.html | 4 + .../sequenceflow-order-display-template.html | 3 + .../properties/sequenceflow-order-popup.html | 47 + .../sequenceflow-order-write-template.html | 4 + .../signal-definitions-display-template.html | 3 + .../properties/signal-definitions-popup.html | 58 + .../signal-definitions-write-template.html | 4 + .../signal-property-write-template.html | 4 + .../string-property-write-mode-template.html | 8 + ...subprocess-reference-display-template.html | 3 + .../subprocess-reference-popup.html | 43 + .../subprocess-reference-write-template.html | 4 + .../task-listeners-display-template.html | 3 + .../properties/task-listeners-popup.html | 102 + .../task-listeners-write-template.html | 4 + .../configuration/properties/text-popup.html | 17 + .../text-property-write-template.html | 4 + .../configuration/toolbar-custom-actions.js | 18 + .../configuration/toolbar-default-actions.js | 429 + .../editor-app/configuration/toolbar.js | 175 + .../editor-app/configuration/url-config.js | 35 + .../modeler/editor-app/css/style-common.css | 1518 + .../modeler/editor-app/css/style-editor.css | 639 + .../public/modeler/editor-app/css/style.css | 477 + .../modeler/editor-app/editor-config.js | 32 + .../modeler/editor-app/editor-controller.js | 65 + .../public/modeler/editor-app/editor-utils.js | 135 + .../public/modeler/editor-app/editor.html | 136 + .../modeler/editor-app/editor/css/editor.css | 202 + .../editor-app/editor/i18n/translation_de.js | 383 + .../editor/i18n/translation_en_us.js | 423 + .../editor/i18n/translation_signavio_de.js | 106 + .../editor/i18n/translation_signavio_en_us.js | 108 + .../modeler/editor-app/editor/oryx.debug.js | 24513 ++++++++++++++++ .../public/modeler/editor-app/editor/oryx.js | 30 + .../public/modeler/editor-app/eventbus.js | 133 + .../fonts/activiti-admin-webfont.eot | Bin 0 -> 5029 bytes .../fonts/activiti-admin-webfont.svg | 43 + .../fonts/activiti-admin-webfont.ttf | Bin 0 -> 8628 bytes .../fonts/activiti-admin-webfont.woff | Bin 0 -> 5624 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20290 bytes .../fonts/glyphicons-halflings-regular.svg | 229 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41236 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23292 bytes .../modeler/editor-app/header-controller.js | 31 + .../public/modeler/editor-app/i18n/en.json | 291 + .../modeler/editor-app/images/bpmn-error.png | Bin 0 -> 492 bytes .../editor-app/images/bpmn-warning.png | Bin 0 -> 469 bytes .../editor-app/images/datadefinition.png | Bin 0 -> 778 bytes .../modeler/editor-app/images/delete.png | Bin 0 -> 304 bytes .../modeler/editor-app/images/loading.gif | Bin 0 -> 17550 bytes .../modeler/editor-app/images/logo-2x.png | Bin 0 -> 9386 bytes .../public/modeler/editor-app/images/logo.png | Bin 0 -> 4427 bytes .../editor-app/images/nw-handle-dark.gif | Bin 0 -> 839 bytes .../editor-app/images/se-handle-dark.gif | Bin 0 -> 838 bytes .../editor-app/images/shapemenu_highlight.png | Bin 0 -> 462 bytes .../modeler/editor-app/images/wrench.png | Bin 0 -> 374 bytes .../angular-cookies.min.js | 8 + .../angular-cookies.min.js.map | 8 + .../libs/angular-dragdrop.min-1.0.3.js | 9 + .../angular-dragdrop.min.js | 29 + .../angular-mocks_1.2.13/angular-mocks.js | 2136 ++ .../angular-resource.js | 596 + .../angular-resource.min.js | 13 + .../angular-resource.min.js.map | 8 + .../angular-route_1.2.13/angular-route.js | 921 + .../angular-route_1.2.13/angular-route.min.js | 14 + .../angular-route.min.js.map | 8 + .../angular-sanitize.js | 625 + .../angular-sanitize.min.js | 14 + .../angular-sanitize.min.js.map | 8 + .../angular-scroll.min.js | 1 + .../angular-strap_2.0.5/angular-strap.min.js | 9 + .../angular-strap.tpl.min.js | 8 + .../.bower.json | 19 + .../angular-translate-loader-static-files.js | 31 + ...gular-translate-loader-static-files.min.js | 6 + .../.bower.json | 20 + .../angular-translate-storage-cookie.js | 19 + .../angular-translate-storage-cookie.min.js | 6 + .../angular-translate.js | 960 + .../angular-translate.min.js | 6 + .../angular_1.2.13/angular-animate.min.js | 27 + .../libs/angular_1.2.13/angular.min.js | 204 + .../daterangepicker-bs3.css | 267 + .../daterangepicker.js | 1026 + .../bootstrap_3.1.1/css/bootstrap-theme.css | 347 + .../css/bootstrap-theme.css.map | 1 + .../css/bootstrap-theme.min.css | 7 + .../libs/bootstrap_3.1.1/css/bootstrap.css | 5785 ++++ .../bootstrap_3.1.1/css/bootstrap.css.map | 1 + .../bootstrap_3.1.1/css/bootstrap.min.css | 7 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../fonts/glyphicons-halflings-regular.svg | 229 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../libs/bootstrap_3.1.1/js/bootstrap.js | 1951 ++ .../libs/bootstrap_3.1.1/js/bootstrap.min.js | 6 + .../libs/es5-shim-15.3.4.5/.bower.json | 14 + .../libs/es5-shim-15.3.4.5/.gitignore | 2 + .../editor-app/libs/es5-shim-15.3.4.5/CHANGES | 93 + .../libs/es5-shim-15.3.4.5/CONTRIBUTORS.md | 25 + .../editor-app/libs/es5-shim-15.3.4.5/LICENSE | 19 + .../libs/es5-shim-15.3.4.5/README.md | 161 + .../libs/es5-shim-15.3.4.5/es5-sham.js | 444 + .../libs/es5-shim-15.3.4.5/es5-sham.map | 1 + .../libs/es5-shim-15.3.4.5/es5-sham.min.js | 4 + .../libs/es5-shim-15.3.4.5/es5-shim.js | 1314 + .../libs/es5-shim-15.3.4.5/es5-shim.map | 1 + .../libs/es5-shim-15.3.4.5/es5-shim.min.js | 4 + .../libs/es5-shim-15.3.4.5/package.json | 34 + .../es5-shim-15.3.4.5/tests/helpers/h-kill.js | 64 + .../tests/helpers/h-matchers.js | 34 + .../libs/es5-shim-15.3.4.5/tests/helpers/h.js | 3 + .../libs/es5-shim-15.3.4.5/tests/index.html | 64 + .../es5-shim-15.3.4.5/tests/index.min.html | 63 + .../tests/lib/jasmine-html.js | 190 + .../es5-shim-15.3.4.5/tests/lib/jasmine.css | 166 + .../es5-shim-15.3.4.5/tests/lib/jasmine.js | 2477 ++ .../tests/lib/jasmine_favicon.png | Bin 0 -> 905 bytes .../libs/es5-shim-15.3.4.5/tests/lib/json2.js | 478 + .../es5-shim-15.3.4.5/tests/spec/s-array.js | 1223 + .../es5-shim-15.3.4.5/tests/spec/s-date.js | 152 + .../tests/spec/s-function.js | 147 + .../es5-shim-15.3.4.5/tests/spec/s-number.js | 14 + .../es5-shim-15.3.4.5/tests/spec/s-object.js | 181 + .../es5-shim-15.3.4.5/tests/spec/s-string.js | 204 + .../libs/jquery-ui-1.10.3.custom.min.js | 6 + .../libs/jquery.autogrow-textarea.js | 61 + .../editor-app/libs/jquery_1.11.0/jquery.js | 9789 ++++++ .../libs/jquery_1.11.0/jquery.min.js | 4 + .../libs/jquery_1.11.0/jquery.min.map | 1 + .../editor-app/libs/json3_3.2.6/LICENSE | 20 + .../editor-app/libs/json3_3.2.6/lib/json3.js | 861 + .../libs/json3_3.2.6/lib/json3.min.js | 18 + .../libs/momentjs_2.5.1/momentjs.min.js | 6 + .../editor-app/libs/mousetrap-1.4.5.min.js | 9 + .../editor-app/libs/ng-grid-2.0.7-min.js | 2 + .../editor-app/libs/ng-grid-2.0.7.min.css | 1 + .../modeler/editor-app/libs/path_parser.js | 30 + .../editor-app/libs/prototype-1.5.1.js | 3272 +++ .../editor-app/libs/ui-utils.min-0.0.4.js | 7 + .../partials/root-stencil-item-template.html | 11 + .../partials/stencil-item-template.html | 27 + .../public/modeler/editor-app/plugins.xml | 58 + .../editor-app/popups/icon-template.html | 3 + .../modeler/editor-app/popups/save-model.html | 41 + .../editor-app/popups/select-shape.html | 20 + .../editor-app/popups/unsaved-changes.html | 22 + .../editor-app/select-shape-controller.js | 314 + .../modeler/editor-app/stencil-controller.js | 1435 + .../activity/event.subprocess.collapsed.png | Bin 0 -> 309 bytes .../icons/activity/event.subprocess.png | Bin 0 -> 274 bytes .../icons/activity/expanded.subprocess.png | Bin 0 -> 273 bytes .../activity/list/type.business.rule.png | Bin 0 -> 209 bytes .../icons/activity/list/type.camel.png | Bin 0 -> 608 bytes .../icons/activity/list/type.manual.png | Bin 0 -> 405 bytes .../bpmn2.0/icons/activity/list/type.mule.png | Bin 0 -> 705 bytes .../icons/activity/list/type.receive.png | Bin 0 -> 297 bytes .../icons/activity/list/type.script.png | Bin 0 -> 300 bytes .../bpmn2.0/icons/activity/list/type.send.png | Bin 0 -> 440 bytes .../icons/activity/list/type.service.png | Bin 0 -> 530 bytes .../icons/activity/list/type.shell.png | Bin 0 -> 325 bytes .../bpmn2.0/icons/activity/list/type.user.png | Bin 0 -> 405 bytes .../bpmn2.0/icons/activity/subprocess.png | Bin 0 -> 282 bytes .../bpmn2.0/icons/activity/task.png | Bin 0 -> 255 bytes .../icons/artifact/text.annotation.png | Bin 0 -> 367 bytes .../bpmn2.0/icons/catching/cancel.png | Bin 0 -> 3241 bytes .../bpmn2.0/icons/catching/compensation.png | Bin 0 -> 3256 bytes .../bpmn2.0/icons/catching/error.png | Bin 0 -> 698 bytes .../bpmn2.0/icons/catching/message.png | Bin 0 -> 549 bytes .../bpmn2.0/icons/catching/signal.png | Bin 0 -> 627 bytes .../bpmn2.0/icons/catching/timer.png | Bin 0 -> 573 bytes .../connector/association.undirected.png | Bin 0 -> 413 bytes .../connector/association.unidirectional.png | Bin 0 -> 3032 bytes .../bpmn2.0/icons/connector/messageflow.png | Bin 0 -> 3121 bytes .../bpmn2.0/icons/connector/sequenceflow.png | Bin 0 -> 346 bytes .../bpmn2.0/icons/dataobject/data.store.png | Bin 0 -> 3184 bytes .../stencilsets/bpmn2.0/icons/diagram.png | Bin 0 -> 206 bytes .../bpmn2.0/icons/endevent/cancel.png | Bin 0 -> 3280 bytes .../bpmn2.0/icons/endevent/error.png | Bin 0 -> 757 bytes .../bpmn2.0/icons/endevent/none.png | Bin 0 -> 467 bytes .../bpmn2.0/icons/endevent/terminate.png | Bin 0 -> 3166 bytes .../bpmn2.0/icons/gateway/eventbased.png | Bin 0 -> 492 bytes .../icons/gateway/exclusive.databased.png | Bin 0 -> 462 bytes .../bpmn2.0/icons/gateway/inclusive.png | Bin 0 -> 432 bytes .../bpmn2.0/icons/gateway/parallel.png | Bin 0 -> 329 bytes .../bpmn2.0/icons/startevent/error.png | Bin 0 -> 698 bytes .../bpmn2.0/icons/startevent/message.png | Bin 0 -> 549 bytes .../bpmn2.0/icons/startevent/none.png | Bin 0 -> 450 bytes .../bpmn2.0/icons/startevent/signal.png | Bin 0 -> 3201 bytes .../bpmn2.0/icons/startevent/timer.png | Bin 0 -> 573 bytes .../bpmn2.0/icons/swimlane/lane.png | Bin 0 -> 187 bytes .../bpmn2.0/icons/swimlane/pool.png | Bin 0 -> 189 bytes .../bpmn2.0/icons/throwing/none.png | Bin 0 -> 582 bytes .../bpmn2.0/icons/throwing/signal.png | Bin 0 -> 747 bytes .../modeler/editor-app/toolbar-controller.js | 162 + .../src/console/public/modeler/modeler.html | 151 + .../console/public/modeler/stencilset.json | 1345 + .../erupt-flow/src/console/src/App.vue | 64 + .../erupt-flow/src/console/src/api/auth.js | 20 + .../erupt-flow/src/console/src/api/design.js | 118 + .../erupt-flow/src/console/src/api/org.js | 32 + .../erupt-flow/src/console/src/api/process.js | 57 + .../erupt-flow/src/console/src/api/request.js | 76 + .../src/console/src/assets/global.css | 36 + .../src/console/src/assets/iconfont/demo.css | 539 + .../src/assets/iconfont/demo_index.html | 1062 + .../console/src/assets/iconfont/iconfont.css | 168 + .../console/src/assets/iconfont/iconfont.js | 1 + .../console/src/assets/iconfont/iconfont.json | 268 + .../console/src/assets/iconfont/iconfont.ttf | Bin 0 -> 15812 bytes .../console/src/assets/iconfont/iconfont.woff | Bin 0 -> 10444 bytes .../src/assets/iconfont/iconfont.woff2 | Bin 0 -> 9072 bytes .../src/console/src/assets/image/code.png | Bin 0 -> 7245 bytes .../src/console/src/assets/styles/btn.scss | 99 + .../console/src/assets/styles/element-ui.scss | 84 + .../src/assets/styles/element-variables.scss | 31 + .../src/console/src/assets/styles/index.scss | 191 + .../src/console/src/assets/styles/mixin.scss | 66 + .../src/console/src/assets/styles/ruoyi.scss | 239 + .../console/src/assets/styles/sidebar.scss | 222 + .../console/src/assets/styles/transition.scss | 48 + .../console/src/assets/styles/variables.scss | 44 + .../src/console/src/assets/theme.less | 14 + .../src/components/common/Ellipsis.vue | 54 + .../src/components/common/OrgPicker.vue | 464 + .../src/console/src/components/common/Tip.vue | 36 + .../console/src/components/common/WDialog.vue | 103 + .../erupt-flow/src/console/src/main.js | 41 + .../src/console/src/router/index.js | 95 + .../erupt-flow/src/console/src/store/index.js | 29 + .../src/console/src/utils/CustomUtil.js | 25 + .../src/console/src/utils/myUtil.js | 42 + .../src/console/src/views/Index.vue | 154 + .../src/views/admin/FormProcessDesign.vue | 301 + .../console/src/views/admin/FormsPanel.vue | 407 + .../console/src/views/admin/LayoutHeader.vue | 159 + .../views/admin/layout/FormBaseSetting.vue | 270 + .../src/views/admin/layout/FormDesign.vue | 533 + .../src/views/admin/layout/FormProSetting.vue | 48 + .../src/views/admin/layout/ProcessDesign.vue | 103 + .../admin/layout/form/FormDesignRender.vue | 53 + .../admin/layout/process/DefaultNodeProps.js | 112 + .../admin/layout/process/ProcessTree.vue | 479 + .../console/src/views/common/InsertButton.vue | 97 + .../src/views/common/form/ComponentExport.js | 29 + .../src/views/common/form/ComponentMinxins.js | 30 + .../common/form/ComponentsConfigExport.js | 220 + .../views/common/form/FormComponentConfig.vue | 71 + .../src/views/common/form/FormRender.vue | 107 + .../common/form/components/AmountInput.vue | 153 + .../views/common/form/components/DateTime.vue | 52 + .../common/form/components/DateTimeRange.vue | 114 + .../common/form/components/DeptPicker.vue | 65 + .../common/form/components/Description.vue | 35 + .../common/form/components/FileUpload.vue | 91 + .../common/form/components/ImageUpload.vue | 123 + .../views/common/form/components/Location.vue | 18 + .../common/form/components/MoneyInput.vue | 18 + .../common/form/components/MultipleSelect.vue | 63 + .../common/form/components/NumberInput.vue | 38 + .../common/form/components/SelectInput.vue | 56 + .../common/form/components/SignPannel.vue | 18 + .../common/form/components/SpanLayout.vue | 216 + .../common/form/components/TableList.vue | 314 + .../common/form/components/TextInput.vue | 38 + .../common/form/components/TextareaInput.vue | 48 + .../common/form/components/UserPicker.vue | 65 + .../common/form/config/AmountInputConfig.vue | 37 + .../common/form/config/DateTimeConfig.vue | 38 + .../form/config/DateTimeRangeConfig.vue | 42 + .../common/form/config/DescriptionConfig.vue | 33 + .../common/form/config/FileUploadConfig.vue | 48 + .../common/form/config/ImageUploadConfig.vue | 43 + .../common/form/config/LocationConfig.vue | 18 + .../common/form/config/MoneyInputConfig.vue | 18 + .../common/form/config/NumberInputConfig.vue | 30 + .../common/form/config/OrgPickerConfig.vue | 34 + .../common/form/config/SelectInputConfig.vue | 97 + .../common/form/config/TableListConfig.vue | 52 + .../common/form/config/TextInputConfig.vue | 30 + .../form/config/TextareaInputConfig.vue | 30 + .../src/views/common/process/OrgItems.vue | 48 + .../process/config/ApprovalNodeConfig.vue | 298 + .../common/process/config/CcNodeConfig.vue | 69 + .../config/ConditionGroupItemConfig.vue | 281 + .../process/config/ConditionNodeConfig.vue | 135 + .../common/process/config/DelayNodeConfig.vue | 48 + .../process/config/FormAuthorityConfig.vue | 133 + .../common/process/config/NodeConfig.vue | 66 + .../common/process/config/RootNodeConfig.vue | 58 + .../process/config/TriggerNodeConfig.vue | 189 + .../common/process/nodes/ApprovalNode.vue | 126 + .../src/views/common/process/nodes/CcNode.vue | 61 + .../common/process/nodes/ConcurrentNode.vue | 186 + .../common/process/nodes/ConditionNode.vue | 327 + .../views/common/process/nodes/DelayNode.vue | 77 + .../views/common/process/nodes/EmptyNode.vue | 20 + .../src/views/common/process/nodes/Node.vue | 202 + .../views/common/process/nodes/RootNode.vue | 42 + .../common/process/nodes/TriggerNode.vue | 64 + .../src/views/workspace/InitiateProcess.vue | 103 + .../src/views/workspace/ProcessDetail.vue | 138 + .../src/views/workspace/TaskDetail.vue | 138 + .../console/src/views/workspace/TimeLine.vue | 99 + .../console/src/views/workspace/WorkSpace.vue | 348 + .../erupt-flow/src/console/vue.config.js | 40 + .../flow/EruptFlowAutoConfiguration.java | 51 + .../erupt/flow/bean/entity/OaDepartments.java | 48 + .../erupt/flow/bean/entity/OaFormGroups.java | 52 + .../xyz/erupt/flow/bean/entity/OaForms.java | 68 + .../flow/bean/entity/OaProcessActivity.java | 108 + .../bean/entity/OaProcessActivityHistory.java | 91 + .../flow/bean/entity/OaProcessDefinition.java | 109 + .../flow/bean/entity/OaProcessExecution.java | 73 + .../flow/bean/entity/OaProcessInstance.java | 112 + .../bean/entity/OaProcessInstanceHistory.java | 107 + .../erupt/flow/bean/entity/OaProcessNode.java | 23 + .../bean/entity/OaProcessNodeCondition.java | 12 + .../flow/bean/entity/OaProcessNodeGroup.java | 12 + .../flow/bean/entity/OaProcessNodeProps.java | 12 + .../xyz/erupt/flow/bean/entity/OaTask.java | 140 + .../erupt/flow/bean/entity/OaTaskHistory.java | 131 + .../flow/bean/entity/OaTaskOperation.java | 80 + .../flow/bean/entity/OaTaskUserLink.java | 42 + .../flow/bean/entity/OaUserDepartments.java | 36 + .../xyz/erupt/flow/bean/entity/OaUsers.java | 68 + .../xyz/erupt/flow/bean/vo/OrgTreeVo.java | 29 + .../xyz/erupt/flow/constant/FlowConstant.java | 11 + .../flow/controller/FormGroupController.java | 98 + .../flow/controller/FormsController.java | 92 + .../flow/controller/OaUserController.java | 57 + .../ProcessDefinitionController.java | 70 + .../controller/ProcessInstanceController.java | 28 + .../erupt/flow/controller/TaskController.java | 45 + .../flow/handler/TaskCompleteHandler.java | 26 + .../flow/mapper/OaDepartmentsMapper.java | 21 + .../erupt/flow/mapper/OaFormGroupsMapper.java | 13 + .../xyz/erupt/flow/mapper/OaFormsMapper.java | 13 + .../OaProcessActivityHistoryMapper.java | 9 + .../flow/mapper/OaProcessActivityMapper.java | 9 + .../mapper/OaProcessDefinitionMapper.java | 9 + .../flow/mapper/OaProcessExecutionMapper.java | 9 + .../OaProcessInstanceHistoryMapper.java | 9 + .../flow/mapper/OaProcessInstanceMapper.java | 9 + .../flow/mapper/OaTaskHistoryMapper.java | 7 + .../xyz/erupt/flow/mapper/OaTaskMapper.java | 14 + .../flow/mapper/OaTaskOperationMapper.java | 9 + .../flow/mapper/OaUserDepartmentsMapper.java | 13 + .../xyz/erupt/flow/mapper/OaUsersMapper.java | 27 + .../erupt/flow/service/FormGroupService.java | 55 + .../xyz/erupt/flow/service/FormsService.java | 17 + .../flow/service/OrgUserAndDeptService.java | 29 + .../ProcessActivityHistoryService.java | 14 + .../flow/service/ProcessActivityService.java | 50 + .../service/ProcessDefinitionService.java | 64 + .../flow/service/ProcessExecutionService.java | 48 + .../ProcessInstanceHistoryService.java | 15 + .../flow/service/ProcessInstanceService.java | 27 + .../erupt/flow/service/ProcessNodeEngine.java | 4 + .../flow/service/TaskHistoryService.java | 24 + .../flow/service/TaskOperationService.java | 15 + .../xyz/erupt/flow/service/TaskService.java | 44 + .../service/impl/FormGroupServiceImpl.java | 96 + .../flow/service/impl/FormsServiceImpl.java | 93 + .../impl/OrgUserAndDeptServiceImpl.java | 55 + .../ProcessActivityHistoryServiceImpl.java | 36 + .../impl/ProcessActivityServiceImpl.java | 276 + .../impl/ProcessDefinitionServiceImpl.java | 235 + .../impl/ProcessExecutionServiceImpl.java | 170 + .../ProcessInstanceHistoryServiceImpl.java | 43 + .../impl/ProcessInstanceServiceImpl.java | 117 + .../service/impl/ProcessNodeEngineImpl.java | 8 + .../service/impl/TaskHistoryServiceImpl.java | 36 + .../impl/TaskOperationServiceImpl.java | 61 + .../flow/service/impl/TaskServiceImpl.java | 178 + .../xyz/erupt/flow/web/EruptApiPageModel.java | 43 + .../main/resources/META-INF/spring.factories | 1 + .../main/resources/mapper/OaTaskMapper.xml | 11 + pom.xml | 1 + 498 files changed, 126526 insertions(+) create mode 100644 erupt-extra/erupt-flow/README.md create mode 100644 "erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172610.png" create mode 100644 "erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172653.png" create mode 100644 "erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172708.png" create mode 100644 "erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172722.png" create mode 100644 "erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172733.png" create mode 100644 "erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172751.png" create mode 100644 "erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172813.png" create mode 100644 "erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172823.png" create mode 100644 "erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172832.png" create mode 100644 erupt-extra/erupt-flow/img/def.png create mode 100644 erupt-extra/erupt-flow/img/execution.jpg create mode 100644 erupt-extra/erupt-flow/img/hi.png create mode 100644 erupt-extra/erupt-flow/img/inst.png create mode 100644 erupt-extra/erupt-flow/img/node.png create mode 100644 erupt-extra/erupt-flow/img/ru.png create mode 100644 erupt-extra/erupt-flow/img/task.png create mode 100644 erupt-extra/erupt-flow/pom.xml create mode 100644 erupt-extra/erupt-flow/src/console/.env.development create mode 100644 erupt-extra/erupt-flow/src/console/.env.production create mode 100644 erupt-extra/erupt-flow/src/console/.gitignore create mode 100644 erupt-extra/erupt-flow/src/console/LICENSE create mode 100644 erupt-extra/erupt-flow/src/console/README.md create mode 100644 erupt-extra/erupt-flow/src/console/babel.config.js create mode 100644 erupt-extra/erupt-flow/src/console/image.png create mode 100644 erupt-extra/erupt-flow/src/console/package-lock.json create mode 100644 erupt-extra/erupt-flow/src/console/package.json create mode 100644 erupt-extra/erupt-flow/src/console/public/favicon.ico create mode 100644 erupt-extra/erupt-flow/src/console/public/index.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/bg.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/breadcrumbs.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/checker-bg.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/blue/message_catch.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/business_rule.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/error_catch.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/error_throw.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/manual.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/message_catch.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/message_throw.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/receive.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/script.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/send.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/service.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/signal_catch.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/signal_throw.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/timer.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/user.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/index.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ActivitiRest.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ActivityImpl.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/Color.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/LineBreakMeasurer.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/Polyline.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ProcessDiagramCanvas.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ProcessDiagramGenerator.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/jquery/jquery.asyncqueue.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/jquery/jquery.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/jquery/jquery.progressbar.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/jstools.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/raphael.2.1.1.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/raphael.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/raphael_uncompressed.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/textlayout.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/style.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/app-cfg.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/app.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-assignment-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-condition-expression-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-custom-controllers.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-default-controllers.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-event-listeners-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-execution-listeners-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-fields-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-form-properties-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-in-parameters-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-message-definitions-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-message-scope-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-multiinstance-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-out-parameters-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-sequenceflow-order-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-signal-definitions-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-signal-scope-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties-task-listeners-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/assignment-candidateGroup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/assignment-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/assignment-popup-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/assignment-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/assignment-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/boolean-property-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/condition-expression-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/condition-expression-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/condition-expression-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/default-value-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/event-listeners-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/event-listeners-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/event-listeners-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/execution-listeners-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/execution-listeners-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/execution-listeners-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/feedback-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/fields-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/fields-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/fields-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/form-properties-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/form-properties-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/form-properties-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/in-parameters-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/in-parameters-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/in-parameters-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/message-definitions-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/message-definitions-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/message-definitions-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/message-property-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/multiinstance-property-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/out-parameters-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/out-parameters-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/out-parameters-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/sequenceflow-order-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/sequenceflow-order-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/sequenceflow-order-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/signal-definitions-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/signal-definitions-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/signal-definitions-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/signal-property-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/string-property-write-mode-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/subprocess-reference-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/subprocess-reference-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/subprocess-reference-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/task-listeners-display-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/task-listeners-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/task-listeners-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/text-popup.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/properties/text-property-write-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/toolbar-custom-actions.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/toolbar-default-actions.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/toolbar.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/configuration/url-config.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/css/style-common.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/css/style-editor.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/css/style.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/editor-config.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/editor-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/editor-utils.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/editor.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/editor/css/editor.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/editor/i18n/translation_de.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/editor/i18n/translation_en_us.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/editor/i18n/translation_signavio_de.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/editor/i18n/translation_signavio_en_us.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/editor/oryx.debug.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/editor/oryx.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/eventbus.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/fonts/activiti-admin-webfont.eot create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/fonts/activiti-admin-webfont.svg create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/fonts/activiti-admin-webfont.ttf create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/fonts/activiti-admin-webfont.woff create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/fonts/glyphicons-halflings-regular.eot create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/fonts/glyphicons-halflings-regular.svg create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/fonts/glyphicons-halflings-regular.ttf create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/fonts/glyphicons-halflings-regular.woff create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/header-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/i18n/en.json create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/images/bpmn-error.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/images/bpmn-warning.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/images/datadefinition.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/images/delete.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/images/loading.gif create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/images/logo-2x.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/images/logo.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/images/nw-handle-dark.gif create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/images/se-handle-dark.gif create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/images/shapemenu_highlight.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/images/wrench.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-cookies_1.2.13/angular-cookies.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-cookies_1.2.13/angular-cookies.min.js.map create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-dragdrop.min-1.0.3.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-dragdrop_1.0.7/angular-dragdrop.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-mocks_1.2.13/angular-mocks.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-resource_1.2.13/angular-resource.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-resource_1.2.13/angular-resource.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-resource_1.2.13/angular-resource.min.js.map create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-route_1.2.13/angular-route.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-route_1.2.13/angular-route.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-route_1.2.13/angular-route.min.js.map create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js.map create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-scroll_0.5.7/angular-scroll.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-strap_2.0.5/angular-strap.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-strap_2.0.5/angular-strap.tpl.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/.bower.json create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/.bower.json create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate_2.4.2/angular-translate.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate_2.4.2/angular-translate.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular_1.2.13/angular-animate.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular_1.2.13/angular.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker-bs3.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css.map create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.min.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap.css.map create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap.min.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.eot create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.svg create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.ttf create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.woff create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/js/bootstrap.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/js/bootstrap.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/.bower.json create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/.gitignore create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/CHANGES create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/CONTRIBUTORS.md create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/LICENSE create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/README.md create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/es5-sham.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/es5-sham.map create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/es5-sham.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/es5-shim.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/es5-shim.map create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/es5-shim.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/package.json create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h-kill.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h-matchers.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/index.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/index.min.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine-html.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine_favicon.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/lib/json2.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-array.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-date.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-function.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-number.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-object.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-string.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/jquery-ui-1.10.3.custom.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/jquery.autogrow-textarea.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/jquery_1.11.0/jquery.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/jquery_1.11.0/jquery.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/jquery_1.11.0/jquery.min.map create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/json3_3.2.6/LICENSE create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/json3_3.2.6/lib/json3.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/json3_3.2.6/lib/json3.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/momentjs_2.5.1/momentjs.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/mousetrap-1.4.5.min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/ng-grid-2.0.7-min.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/ng-grid-2.0.7.min.css create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/path_parser.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/prototype-1.5.1.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/ui-utils.min-0.0.4.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/partials/root-stencil-item-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/partials/stencil-item-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/plugins.xml create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/popups/icon-template.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/popups/save-model.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/popups/select-shape.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/popups/unsaved-changes.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/select-shape-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencil-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.collapsed.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/expanded.subprocess.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.business.rule.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.camel.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.manual.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.mule.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.receive.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.script.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.send.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.service.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.shell.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.user.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/subprocess.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/activity/task.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/artifact/text.annotation.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/catching/cancel.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/catching/compensation.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/catching/error.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/catching/message.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/catching/signal.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/catching/timer.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/connector/association.undirected.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/connector/association.unidirectional.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/connector/messageflow.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/connector/sequenceflow.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/dataobject/data.store.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/diagram.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/endevent/cancel.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/endevent/error.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/endevent/none.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/endevent/terminate.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/gateway/eventbased.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/gateway/exclusive.databased.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/gateway/inclusive.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/gateway/parallel.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/startevent/error.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/startevent/message.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/startevent/none.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/startevent/signal.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/startevent/timer.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/swimlane/lane.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/swimlane/pool.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/throwing/none.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/stencilsets/bpmn2.0/icons/throwing/signal.png create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/editor-app/toolbar-controller.js create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/modeler.html create mode 100644 erupt-extra/erupt-flow/src/console/public/modeler/stencilset.json create mode 100644 erupt-extra/erupt-flow/src/console/src/App.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/api/auth.js create mode 100644 erupt-extra/erupt-flow/src/console/src/api/design.js create mode 100644 erupt-extra/erupt-flow/src/console/src/api/org.js create mode 100644 erupt-extra/erupt-flow/src/console/src/api/process.js create mode 100644 erupt-extra/erupt-flow/src/console/src/api/request.js create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/global.css create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/iconfont/demo.css create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/iconfont/demo_index.html create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/iconfont/iconfont.css create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/iconfont/iconfont.js create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/iconfont/iconfont.json create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/iconfont/iconfont.ttf create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/iconfont/iconfont.woff create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/iconfont/iconfont.woff2 create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/image/code.png create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/styles/btn.scss create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/styles/element-ui.scss create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/styles/element-variables.scss create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/styles/index.scss create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/styles/mixin.scss create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/styles/ruoyi.scss create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/styles/sidebar.scss create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/styles/transition.scss create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/styles/variables.scss create mode 100644 erupt-extra/erupt-flow/src/console/src/assets/theme.less create mode 100644 erupt-extra/erupt-flow/src/console/src/components/common/Ellipsis.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/components/common/OrgPicker.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/components/common/Tip.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/components/common/WDialog.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/main.js create mode 100644 erupt-extra/erupt-flow/src/console/src/router/index.js create mode 100644 erupt-extra/erupt-flow/src/console/src/store/index.js create mode 100644 erupt-extra/erupt-flow/src/console/src/utils/CustomUtil.js create mode 100644 erupt-extra/erupt-flow/src/console/src/utils/myUtil.js create mode 100644 erupt-extra/erupt-flow/src/console/src/views/Index.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/admin/FormProcessDesign.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/admin/FormsPanel.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/admin/LayoutHeader.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/admin/layout/FormBaseSetting.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/admin/layout/FormDesign.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/admin/layout/FormProSetting.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/admin/layout/ProcessDesign.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/admin/layout/form/FormDesignRender.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/admin/layout/process/DefaultNodeProps.js create mode 100644 erupt-extra/erupt-flow/src/console/src/views/admin/layout/process/ProcessTree.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/InsertButton.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/ComponentExport.js create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/ComponentMinxins.js create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/ComponentsConfigExport.js create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/FormComponentConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/FormRender.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/AmountInput.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/DateTime.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/DateTimeRange.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/DeptPicker.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/Description.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/FileUpload.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/ImageUpload.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/Location.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/MoneyInput.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/MultipleSelect.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/NumberInput.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/SelectInput.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/SignPannel.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/SpanLayout.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/TableList.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/TextInput.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/TextareaInput.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/components/UserPicker.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/AmountInputConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/DateTimeConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/DateTimeRangeConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/DescriptionConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/FileUploadConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/ImageUploadConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/LocationConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/MoneyInputConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/NumberInputConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/OrgPickerConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/SelectInputConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/TableListConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/TextInputConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/form/config/TextareaInputConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/OrgItems.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/config/ApprovalNodeConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/config/CcNodeConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/config/ConditionGroupItemConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/config/ConditionNodeConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/config/DelayNodeConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/config/FormAuthorityConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/config/NodeConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/config/RootNodeConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/config/TriggerNodeConfig.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/nodes/ApprovalNode.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/nodes/CcNode.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/nodes/ConcurrentNode.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/nodes/ConditionNode.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/nodes/DelayNode.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/nodes/EmptyNode.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/nodes/Node.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/nodes/RootNode.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/common/process/nodes/TriggerNode.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/workspace/InitiateProcess.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/workspace/ProcessDetail.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/workspace/TaskDetail.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/workspace/TimeLine.vue create mode 100644 erupt-extra/erupt-flow/src/console/src/views/workspace/WorkSpace.vue create mode 100644 erupt-extra/erupt-flow/src/console/vue.config.js create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/EruptFlowAutoConfiguration.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaDepartments.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaFormGroups.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaForms.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaProcessActivity.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaProcessActivityHistory.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaProcessDefinition.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaProcessExecution.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaProcessInstance.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaProcessInstanceHistory.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaProcessNode.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaProcessNodeCondition.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaProcessNodeGroup.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaProcessNodeProps.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaTask.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaTaskHistory.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaTaskOperation.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaTaskUserLink.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaUserDepartments.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/entity/OaUsers.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/bean/vo/OrgTreeVo.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/constant/FlowConstant.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/controller/FormGroupController.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/controller/FormsController.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/controller/OaUserController.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/controller/ProcessDefinitionController.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/controller/ProcessInstanceController.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/controller/TaskController.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/handler/TaskCompleteHandler.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaDepartmentsMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaFormGroupsMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaFormsMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaProcessActivityHistoryMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaProcessActivityMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaProcessDefinitionMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaProcessExecutionMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaProcessInstanceHistoryMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaProcessInstanceMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaTaskHistoryMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaTaskMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaTaskOperationMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaUserDepartmentsMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/mapper/OaUsersMapper.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/FormGroupService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/FormsService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/OrgUserAndDeptService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/ProcessActivityHistoryService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/ProcessActivityService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/ProcessDefinitionService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/ProcessExecutionService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/ProcessInstanceHistoryService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/ProcessInstanceService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/ProcessNodeEngine.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/TaskHistoryService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/TaskOperationService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/TaskService.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/FormGroupServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/FormsServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/OrgUserAndDeptServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/ProcessActivityHistoryServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/ProcessActivityServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/ProcessDefinitionServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/ProcessExecutionServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/ProcessInstanceHistoryServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/ProcessInstanceServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/ProcessNodeEngineImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/TaskHistoryServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/TaskOperationServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/service/impl/TaskServiceImpl.java create mode 100644 erupt-extra/erupt-flow/src/main/java/xyz/erupt/flow/web/EruptApiPageModel.java create mode 100644 erupt-extra/erupt-flow/src/main/resources/META-INF/spring.factories create mode 100644 erupt-extra/erupt-flow/src/main/resources/mapper/OaTaskMapper.xml diff --git a/erupt-extra/erupt-flow/README.md b/erupt-extra/erupt-flow/README.md new file mode 100644 index 000000000..7aaf9cb14 --- /dev/null +++ b/erupt-extra/erupt-flow/README.md @@ -0,0 +1,205 @@ +## 插件简介 + +更人性化的自定义流程,可自定义表单,多种审批模式。 + +前端来自于另一个开源项目 ,感谢大佬。 + +基于vue+elemntui开发,风格参考于钉钉的审批。 + +该作者也有收费版本,有全部的前后端代码以及更强大的功能。 + +本项目只是完成了流程的基础功能,并且还在开发中。 + +后端代码是基于erupt框架的自研流程引擎,设计思路基本上照搬acvititi。 + +更加轻量化,突出核心功能,而淡化边缘功能。更方便地集成到项目中。 + +## 特点 + +- **人性化** + +零技术的流程图绘制,不再像使用activiti或者flowable等,必须有专业知识。 +普通用户也可以绘制流程和表单。 + +- **灵活** + +流程可以分支、并行、多任务。 +丰富的任务分配类型:用户、角色、多级连续审批等。 +支持流程驳回、退回、撤销、转办、终止等。 + +- **方便** + +基于erupt的插件,但不需要改任何代码,引入即用(甚至不需要建表)。 +如需要使用自己的用户体系,实现几个简单的接口即可。 + +- **扩展** + +动态表单虽然方便,毕竟难以应对复杂多变的需求。 +你也可以使用本流程+自研表单。 + +![](./img/QQ截图20230308172610.png "") + +![](./img/QQ截图20230308172653.png "") + +![](./img/QQ截图20230308172708.png "") + +![](./img/QQ截图20230308172722.png "") + +![](./img/QQ截图20230308172733.png "") + +![](./img/QQ截图20230308172751.png "") + +![](./img/QQ截图20230308172813.png "") + +![](./img/QQ截图20230308172823.png "") + +![](./img/QQ截图20230308172832.png "") + +## 快速开始 + +**1. 引入pom** + +与其他erupt插件一样 + +```xml + + xyz.erupt + erupt-flow + ${project.parent.version} + +``` + +**2. 分配菜单** + +默认会添加2个菜单 + +后台管理: 绘制流程图 + +工作区: 发起、处理工单 + +你也可以遵循erupt风格,创建任何你需要的菜单。`xyz.erupt.flow.bean.entity` 包下的类都可以。 + +## 项目结构 + +项目还在开发中,你可以了解一下项目的基本情况,继续你的开发。 + +目录结构如下,前后端是一起的: + +```` +src + ├── console // 前端代码 + │ ├── api // 调用后端接口 + │ └── views + │ ├── common // 通用工具 + │ ├── admin // 管理端,流程图绘制,动态表单等 + │ └── workspace // 用户端,发起工单,审批工单等 + │ + ├── xyz.erupt.flow // 后端代码 + │ ├── bean // 核心模块 + │ ├── constant // 权限范围 + │ ├── controller + │ ├── handler // erupt的按钮处理 + │ ├── mapper + │ ├── service + │ ├── web // 对一些erupt的类进行增强 + │ └── EruptFlowAutoConfiguration.java // 插件配置 + └── pom.xml // 公共依赖 + +```` + +**前后端分离** + +实际上console是一个独立的vue项目。 + +你可以把它build,然后将dist放在nginx中运行。 + +或者直接拷贝到你的前端项目中以实现前后端分离。 + +## 核心概念 + +- **节点 Node** + +流程图中的元素,绘制好的流程图,会以节点集合的形式(json格式)保存在数据库。 +一个节点描述工单流转到此处时,应该做什么。 + +![](./img/node.png "") + +一个节点的结构例如: + +``` +{ + "id": "root", + "desc": "任何人", + "name": "发起人", + "type": "ROOT", + "props": { + "formPerms": [], + "assignedUser": [] + }, + "children": { + ... + } +``` + + +- **流程定义 ProcessDefinition** + +流程图发布之后产生流程定义,一经发布就不可改变。重复发布会产生新的版本。 + +![](./img/def.png "定义") + + +- **流程实例 ProcessInstance** + +在某个流程定义下,发起业务,会产生一个流程实例。一个流程定义可以产生多个流程实例。 + +一个流程实例,也叫做一个工单。 + +> 流程定义与流程实例的关系,就像“类”与“对象”的关系。 + +![](./img/inst.png "实例") + + +- **线程 Execution** + +流程实例发起后会进行流转,通常是单线程流转,即一个节点处理完再处理下一个。 + +当流程图中有分支时,会产生子线程,多个子线程可能会并行,但是此时主线程必须等待。 + +子线程结束后并入主线程。 + +![](./img/execution.jpg "线程") + + +- **活动 Activity** + +流程实例进行到需要用户处理的节点时,会产生一个对应活动。 + +活动不能直接被用户完成,必须通过完成任务(Task)触发活动完成。 + +一个线程内同时只能有一个活动在运行。 + +> 以面向对象的思想来说,流程实例(ProcessInstance)是流程定义(ProcessDefinition)的实例化。 +> +> 活动(Activity)就是节点(Node)的实例化。 + +- **任务 Task** + +一个活动下可能会有多个任务,用户完成任务达到一定要求(如:完成所有任务、或者完成任意一个任务),会使得活动完成。 + +![](./img/task.png "我的任务") + +- **运行时(RUNNING)和历史(HISTORY)** + +流程结束后,需要保留的数据,都会放入历史表(oa_hi_xxx)。 + +运行时表(oa_ru_xxx)中的数据将会删除,这是为了更高的效率。 + +![](./img/ru.png "运行时表") ![](./img/hi.png "历史表") + + +## 使用自己的用户体系 + +实现三个接口 OaUserHandler、OaDeptHandler、OaRoleHandler,并将他们注册到spring。 + +> 不要忘记注释掉默认的实现(xyz.erupt.flow.handler.process),否则会报错。 diff --git "a/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172610.png" "b/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172610.png" new file mode 100644 index 0000000000000000000000000000000000000000..a21013a7b2cb72eb24331f81d1c77cfcfce40926 GIT binary patch literal 72897 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

m***@#!fn#fCWWNp_!OjF!|UnsC#a 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 literal 0 HcmV?d00001 diff --git "a/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172653.png" "b/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172653.png" new file mode 100644 index 0000000000000000000000000000000000000000..d083915e4360064d4780ee2955a38b1bf51767b8 GIT binary patch literal 38712 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�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

  • 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 F{{s}xnb!aS literal 0 HcmV?d00001 diff --git "a/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172708.png" "b/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172708.png" new file mode 100644 index 0000000000000000000000000000000000000000..7002e550e83581399c8ffb41bdbba87820a43c97 GIT binary patch literal 66883 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 u*S4JKwC$A<& zXW#1DjpR?#u&VzSrVr4!yAq&engx&xyAFqrLzYbi?MmU4TJ|h-5^s#_MRG;5;?ec`w10FoSDeQR%ZbPjWrkhXMw~<>= zukvDt^A5?`KL1?)O-U#vI|Y3v!D_5GL#q209=N)>AjA3MA_1_)SPCMnmfeTki=9I_ zxpGuuCsZddYNfp2^FfXE`Al08W>XBGDEylK`ZE;7j4z--Mzs3HL-2IP65dXn-EGxa z+aP9oT2FnFoO1Re1hN}@_2PLmF$hpj>+RXuZ4 z5G4jc@R#?E_;>^0!3QiVpmIhQzjY{{VPg|qB@l@EpWq_pzGzbrLrYAB;@wtRrV)b4 zv<=Pid31mA#2;E=l!4~`ch89Hn7o4Oh8(1W`7Ugqfxi+_A0v-Uxs_z5$Ha~f^qHS} z{_sKjldhSu=EYs|Al}HOfEx%;r6(h@&;qKO~@`Qof{qP3bljABTG*pPSy1nez& z&A};~;v!|6mIOqgK|&7vxcnGrPf_!kOaSBBwoNjV;I+&{_8k@Q5RfvL7v>NV!0{DF zh)aRn-ve$x_mgBs6=h8$Jl6Oz?J!4msF{KO`;!W1EH1wR=8)Mo!sYzf{kv5^k7T^8 zVQEj0nBT=4m3xoy!Fdv637GH%!JEdsn;_9UuPl5_tG(vZPaERfk}r|G`Z0fe*##Lr z4jQyPj>|DMtnf6u*0@D^TUd_4MQ|s)+r^ajHJ#@me6ULqRObTmM&u8W`SQN3-;FY4 z6C~RG(E$zu-XM?Tv&~BcNSvk}Fy+295MJyipZ64KlK_*&EzrT{xU~N1PzGl)U_%EC z?2ynq{$heeZxFoijX|QkXm*dSoBu8_)GLrBshjm*8|A7CZP0fDc6;*#Fv93(XRU*B z5cbt*BG+Hmup14Zz+y2Xa%j+syxlq?fYHJBpX|Nz|Im&Mg8a(={kll3eS-DN2S;U- RbHNo{H88%Ir*He{zW|W-8BqWL literal 0 HcmV?d00001 diff --git "a/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172722.png" "b/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172722.png" new file mode 100644 index 0000000000000000000000000000000000000000..3227704051f7efc9124dd3da33d8b8941e4b538a GIT binary patch literal 42894 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 literal 0 HcmV?d00001 diff --git "a/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172751.png" "b/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172751.png" new file mode 100644 index 0000000000000000000000000000000000000000..3f244cb8cb81328de0c7e5b95103b7460a50a493 GIT binary patch literal 17341 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 literal 0 HcmV?d00001 diff --git "a/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172813.png" "b/erupt-extra/erupt-flow/img/QQ\346\210\252\345\233\27620230308172813.png" new file mode 100644 index 0000000000000000000000000000000000000000..521fc84a2608852ed6f0bec4e52b79f9fe12ae0b GIT binary patch literal 42192 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 W#+yHjoKVtAr1V1ldHK`V@BbSn_93GH literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/img/def.png b/erupt-extra/erupt-flow/img/def.png new file mode 100644 index 0000000000000000000000000000000000000000..bf0970eb3334e72b71cd60c06fba8dc6ef9b644c GIT binary patch literal 48817 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 VlPa!kjdUzk6g8igKe2fGUjUm2-H`wQ literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/img/execution.jpg b/erupt-extra/erupt-flow/img/execution.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4fac6642e77da4161ac609d9d51d4fd23b39cb93 GIT binary patch literal 33789 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 literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/img/hi.png b/erupt-extra/erupt-flow/img/hi.png new file mode 100644 index 0000000000000000000000000000000000000000..ad81a09638ebcd590bcff03fad01d80240654af3 GIT binary patch literal 2448 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 literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/img/node.png b/erupt-extra/erupt-flow/img/node.png new file mode 100644 index 0000000000000000000000000000000000000000..386f3a6411bd47b82759be999eebf0f5660437ae GIT binary patch literal 40542 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 literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/img/ru.png b/erupt-extra/erupt-flow/img/ru.png new file mode 100644 index 0000000000000000000000000000000000000000..e1b896d2442b8e9ff8b1099d0991f62ed831e992 GIT binary patch literal 2438 zcmai$c{tSDAIHCxELlcb=7z>PWQ(pf8Drna7BewfW^^r)Wk@l$NoA19n$qB+h_Os4 znaa}0Rwy@DRJwA>GIEWz%E6r=0WcPhb~r--0Pz<; z8ed;jZ7?_|=V)Vj`jS73>N-4Y0J*k})zM8ih|Vbfe013_(-hD)>3JO7*L*~Eyv5Ri z#=QX9kwX^^p=NR!)RoOV?PU6wSa0rY358PAXPupH8XEQ*5Us%=5oT6w2|vA3{yvhX zas5~gd3ApJyKBJrt?l)95}lEnuoRxbE@vdEnI8!&!E|!B9Hqb9S!4BCkfZ@#7qgBW z?aWu94q2*S`|~8#ZGM5LCV!r0I-eViDx^u zV|T6OD|b&>{Orsbf5*nUv5FSG>$nB@fXkxVsfd+V78i5-ySXRM+LSM_tYXKnqY`{z zSeaL+_~4eZhoI-jR)x>a8)Ox|zlj*Q$VQus-}@M}w7@8P%-Zk0MtGCzq?4*vo++_% zGbdzw#7c{+$!kGuxclpEkJ;0dArztU<~>yY=4*ID%tL888Y(Ox%R16{f@j)z`f1wJ z64d+D_QJ)XTCNsX^$VV>EGyg4L@wHhN&P*xQzAh|%T?$J&o2YM-8vB%@3ieHZ%D5r z{krv6Y)tW@aNCX{`Q1hK#i5YC$3K$`^^0eOSPw>~;^OBA6Q^`?@H@|kIl-?ypV=9Lr^s+s@<~|!WIJHnGweZp z%ZsZXGpp}a*GY0QC4Q!}BH;OIy4K~VEF9$`OV~Kr>l&6fQKpFazQbATDr3B58rxmG2BgrpS?>kpH1lETHIY*~i>p zI%$>D>z3MMXViG&T75vKb!*MH*?Wmg;l62Ax(1S*lO4%XDxCO$J9COdhzF6q@@xX< zs{YJf+Uut$uw#|VE7_UlLH^jD;zQ#+shQfj63W1o zRFc!Dx$J(<*_3IPicfKMrqJ*|C^V>hTGP813pehW{C4q5X$cgqnX=YnbFRRv4qZE$ zpg#L3JlQGcG(mgKcItG}I&rD|Y4o+j=cD@t?DD6STf>zNrT*op%3$DL;x$-PSWQ>u zE(znD>=gM#1eT-CnXzM$xW>Q;K<1!LVN!c`CgZ;=h^jWbe8BXs(V*RfpR z+<7CjvL!cy*U(fnPT@vAwA&*M(;XBDDw+OfLIpMgN(-p$qmy2AF|(-rfx#shx)&(= z;d*$FjzC%&l4j4`1v+-L%^dI&rM)%zAm(uvlg0Vr*p4a;57G<%Rt59XWxz-O)$K z_T;{*_{c32L$YSYo1Pbhb`O#@P%bvk&<3x`TQlxcViz9bu@AN!#R^8?W1e;BKzex3 zXPlfDp&U)s2}6H!^6RI_Zu{R{c7ccUaHt$RCg4_kkzs#;waiq1Avj^uqY9bY6G zWX0?6v3}@@Helq30?N=-+sB!PYB3FB9ksVNJziq6R9b5g36sZ~eOzoyds5;Nnj2^3 zI0V}r;~$nVqky9DEz;b^cP?QVg8_GuFu&t%UV#l5F||^{%3X)^Y>&s&hf=i^dQTov z(LPh z*gL}=f{-PZ%S!YWC4)>(9+Fm?hJk@gTFm17Z10rh2Rgu+Lr5vd<}lfS=3e;&mtR4i zGo|gMVPBPR&oUtAmnAr#u7W0fJU1dtfx0fpl5*&%+j4KUjc8{tgsYC0B5=}6D(0Tr zK8GhiI;(t3VqnZWB>qBa_d+Au&s}SyBPCX}$Mv`<%8=Ea|oA}2} z?^P|V5Bpvc%jB2AZ6rLFp~Jf)9(l04C;YKNFy=6k|17v3F8ST#MTXRh`>!m7nLs}m zRUHpom)>|wf#Q>~%@PW|B3;jsw9k5abi^hqeN9$W6J-BJy;P15t@ilp5K7q$iCbFF>_O<~zd=fxi zp&@R+Kh$j+2G?(D_Nth}$K)v1zSrgW4P0?@rP-u4>g2ZRKN1|Zrx{Hw*VQ;~7Jk#t ze;Q@;iX!`*u*<)-Q$Tvt j^3wk^9zH$Yv2}~|W5(i|FSM_Ke<#4v7G=|D6-fFU>_eZU literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/img/task.png b/erupt-extra/erupt-flow/img/task.png new file mode 100644 index 0000000000000000000000000000000000000000..3c4d39d240f97b5a5f13cda733e8591e3e93f105 GIT binary patch literal 33321 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 W(bu<2>A<3N!!bL@Z%S;>UHw1ieU0J( literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/pom.xml b/erupt-extra/erupt-flow/pom.xml new file mode 100644 index 000000000..b79fbe2e6 --- /dev/null +++ b/erupt-extra/erupt-flow/pom.xml @@ -0,0 +1,167 @@ + + + 4.0.0 + + xyz.erupt + erupt + 1.11.2 + ../../pom.xml + + + erupt-flow + erupt-flow + flow erupt code + + + + 1.16.20 + 5.1.49 + 2.0.2 + 1.2.10 + 1.2.54 + 2.5.1 + 4.5.6 + 3.4.1 + 1.4.0 + 6.0.0 + + + + + xyz.erupt + erupt-upms + ${project.parent.version} + + + + org.projectlombok + lombok + ${lombok.version} + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis-plus.version} + + + + + com.github.pagehelper + pagehelper-spring-boot-starter + ${pagehelper.boot.version} + + + + + com.github.yulichang + mybatis-plus-join + 1.2.1 + + + + + mysql + mysql-connector-java + ${mysql.version} + + + + cn.hutool + hutool-all + ${hutool.version} + + + + com.belerweb + pinyin4j + ${pinyin4j.version} + + + + com.alibaba + fastjson + 1.2.78 + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-devtools + ${spring.boot.version} + true + + + + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + + + + org.apache.maven.plugins + maven-resources-plugin + 3.2.0 + + + copy-resource + generate-resources + + copy-resources + + + ${basedir}/target/classes/public/erupt-flow + + + ${basedir}/src/console/dist + + + + + + + + + diff --git a/erupt-extra/erupt-flow/src/console/.env.development b/erupt-extra/erupt-flow/src/console/.env.development new file mode 100644 index 000000000..b8d0540b5 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/.env.development @@ -0,0 +1,14 @@ +# 开发环境配置 +ENV = 'development' + +# 代理字符串 +VUE_APP_BASE_API = '/dev-api' + +# 后端真实地址 +baseUrl = 'http://127.0.0.1:9998/erupt-api/erupt-flow' + +# 前端端口 +port = '82' + +# 路由懒加载 +VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/erupt-extra/erupt-flow/src/console/.env.production b/erupt-extra/erupt-flow/src/console/.env.production new file mode 100644 index 000000000..1d14b9690 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/.env.production @@ -0,0 +1,14 @@ +# 正式环境配置 +ENV = 'production' + +##### 独立部署,用nginx代理时 ########## + +# 代理字符串 +# VUE_APP_BASE_API = '/prod-api' + +##### 合并部署,用springboot启动时 ##### + +# 真实路径,用相对路径即可访问本机后台 +VUE_APP_BASE_API = '/erupt-api/erupt-flow' + + diff --git a/erupt-extra/erupt-flow/src/console/.gitignore b/erupt-extra/erupt-flow/src/console/.gitignore new file mode 100644 index 000000000..48b235bd5 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +dist +doc + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/erupt-extra/erupt-flow/src/console/LICENSE b/erupt-extra/erupt-flow/src/console/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/erupt-extra/erupt-flow/src/console/README.md b/erupt-extra/erupt-flow/src/console/README.md new file mode 100644 index 000000000..4e0e41b5d --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/README.md @@ -0,0 +1,284 @@ +

    + +

    + + +

    wflow 工作流

    + +[![star](https://gitee.com/willianfu/jw-workflow-engine/badge/star.svg?theme=dark)](https://gitee.com/willianfu/jw-workflow-engine/stargazers) [![fork](https://gitee.com/willianfu/jw-workflow-engine/badge/fork.svg?theme=dark)](https://gitee.com/willianfu/jw-workflow-engine/members) + + +## 📋 简介 + +`wflow-web` 是 `wflow工作流` 项目的前端设计器,免费且开源,本设计器包含表单设计,审批流程设计。 + +> 区别于传统Bpmn自带流程设计器,传统设计器晦涩难懂,对于普通企业用户使用门槛偏高,没有经过专业培训根本无从下手,需要相关专业人员辅助来创建流程。而本设计器界面简单,符合普通大众的思维逻辑,易于理解和上手使用。 + +**注意:** 这是前端设计器部分,配套的工作流后端目前只有pro版本支持 + + + +### 👩‍👦‍👦加入交流群 +![加群](http://106.13.16.28:83/wechatgroup.png) + +| 微信 | QQ | +| :----------------------------------------------------------: | :------------: | +| 扫码或搜索 `willianfu_` 加我微信,备注 `wflow`拉入群 | 加群 156972829 | + + + + + +开源不易,用爱发电,觉得不错的话可以给个 ⭐ star 鼓励一下 + + 😋 [github地址](https://github.com/willianfu/wflow) | [码云gitee](https://gitee.com/willianfu/jw-workflow-engine) + + 👉 在线体验地址: [戳我打开演示页面](http://150.158.162.224:82) 👈 + + 📃 详细文档请访问 : [wflow文档](https://willianfu.github.io/wflow/) + + + +------ + +### 🚀 wflow-pro + +`wflow` pro版(💰付费) 已经发布,完整的前后端支持功能更强,感兴趣的同学可以访问演示链接进行体验 + +- 🎈 [wflow-pro 功能清单、售价及后续功能开发计划](https://docs.qq.com/doc/DY054VWlVTklJUm5Q) +- 👉 [pro版在线演示](http://106.13.16.28:83) +- 📃 [pro版移动端表单体验,建议手机访问]([wflow-pro | 表单流程设计](http://106.13.16.28:83/#/admin/design?code=wf636b21ade4b06655ea5a3640&mobilePreview=true)) + +#### pro版新增功能 + +- 组件库全面支持`PC + 移动端 (ElementUI + Vant)`,一次表单设计,分别渲染成两种效果,即时预览 +- 表单支持权限控制,每个节点可以看到不一样的表单,且支持动态设置表单内容字段只读、可编辑、隐藏,审批时能动态修改表单,改变后续流程走向 +- 组件库新增组件 + - 省市区选择 + - 手写签字板 + - 单行及多行输入框,支持摄像头扫码录入信息 + - 时间、时间范围选择器 + - 评分 + - 地理位置选择,高德地图选位置 + - 流程关联,可在表单内关联以往发起过的流程 + - 计算公式,配置一个计算公式,根据其他字段值自动计算本字段结果 + - Vue容器,能够在线编写Vue代码,生成自定义的组件 + - Iframe容器,嵌入一个URL页面 + - 新增几十种常用图标 + - 更多组件后续增加。。。 + +- 审批流程回显执行过程,支持附件及评论,流程处理支持评论、同意、驳回、退回、撤销、转交、动态加签 + + +**全新工作台面板** + +![image-20220813002851111](https://pic.rmb.bdstatic.com/bjh/75bb79771bf78d273917df9495bf35b7.png) + + **流程管理** + +![image-20220917085336806](https://dd-static.jd.com/ddimg/jfs/t1/88709/15/33072/150832/63251a92E5e6fda69/47495b56b1080b9e.png) + + +发起审批,左侧表单,右侧显示执行流程步骤 + +![image-20221110153638526.png](http://150.158.162.224/assets/img/image-20221110153638526.01748e11.png) + + + +👇 表单设计器即时预览,根据设备自动适配 + +image-20221110153702877.png + + + **预览审批进度** + +![image-20220917085045176](https://dd-static.jd.com/ddimg/jfs/t1/112699/19/29490/422145/632519e9Ee06ee0b0/dfe1943c51fc447a.png) + +------ + + + +**支持流程打印** + + + + + +## 👀开源版界面一览 + +### **工作区面板** + +输入图片说明 + +输入图片说明 + + + +### 表单管理 + + **工作流表单管理,支持分组和单组表单拖拽排序** + +输入图片说明 + +输入图片说明 + + +--------- + +#### **表单基本设置** + +输入图片说明 + + + + +-------- + +#### **表单设计器** + +> 支持分栏布局、明细表格、以及多种基础组件,支持自定义开发组件 + +![image-20220724220114724](https://pic.rmb.bdstatic.com/bjh/b0f1ed22d61ea86b4222b89dbea6ecd1.png) + +![image-20220724221040780](https://pic.rmb.bdstatic.com/bjh/73e71e1323812a57802a76beffe27906.png) + + + + + + +--------- + + #### 流程设计器 + +> 任意条件层级审批流程设计, 审批节点支持多种业务类型设置,支持流程校验 + +![image-20220711111351476](https://pic.rmb.bdstatic.com/bjh/3300dbc60218a8376b45ed6ed46e8162.png) + + + +**自定义审批条件** + +![image-20220722182318650](https://pic.rmb.bdstatic.com/bjh/4599e414142004f3b0445e478018b8be.png) + + +--------- + +**自定义复杂流转条件** + +> 可视化流程逻辑分支条件 + +![image-20220722182622661](https://pic.rmb.bdstatic.com/bjh/299989bb8b256beae152a29ea611b790.png) + +--------- + + + + **支持多种类型业务节点,支持配置校验,灵活配置** + +image-20220722182427315 + +**支持无限层级嵌套** + +![image-20220711111911427](https://pic.rmb.bdstatic.com/bjh/02cd8936e081bdd053bfa695826817ba.png) + +**自动校验设置项,列出所有错误提示** + +image-20220731215022817 + +**条件节点优先级动态拖拽,实时刷新** + +输入图片说明 + + + +## ✍开发 + + + +📃 详细文档请访问 : [wflow文档](https://willianfu.github.io/wflow/) + + + +### 项目结构 + +``` +├─api 接口 +├─assets +│ └─image +├─components 通用组件 +│ └─common +├─router 路由 +├─store vuex,设计器数据存储 +├─utils +└─views 主要页面及视图 + ├─admin + │ └─layout + │ ├─form 表单设计 + │ └─process 流程设计 + ├─common + │ ├─form 表单 + │ │ ├─components 表单组件 + │ │ ├─config 表单组件配置 + │ │ ├─expand 扩展组件 + │ │ └─settings 设置 + │ └─process 流程 + │ ├─config 流程节点设置 + │ └─nodes 流程节点 + └─workspace 工作区 +``` + + + +### 设计器数据 + +> 设计器的数据都存在Vuex中,需要传递到后端时,直接取出提交到接口 + +```json +{ + "formId":"37289743892", //表单ID,由后端生成 + "formName":"补卡申请", //表单名称 + "logo":{ //图标 + "icon":"图标/图片base64", + "background":"#FEFEFE" //如果是图片则不生效 + }, + //表单权限及其他属性设置 + "settings":{ + "commiter": [], //哪些人可以提交发起表单 + "admin":[], //表单管理员,可以编辑及导出数据 + "singn": false, //全局设置审批时是否需要签字 + "notify":{ + "type": "APP", //通知类型 APP QQ WX DING EMAIL + "title": "消息通知标题" + } + }, + "group":20, //所在分组 + "formItems":[],//表单设计数据 + "process":{}, //流程数据 + "remark":"备注说明" +} +``` + + + +## 💗打赏列表 + +感谢以下朋友的支持,也感谢关注本项目及提出宝贵建议的各位。 + +| 昵称 (按时间排序) | 金额 | +| ------------------------------------------------------------ | ---- | +| * 晓龙 | 400 | +| * HF | 188 | +| * 晓龙 | 500 | +| * 基 | 9.9 | +| * 学龙 | 30 | +| * 辉 | 50 | +| * ncert | 50 | +| 。 | 30 | + + + +## 💪支持作者 + +**开源不易,需要鼓励,如果觉得这个项目有帮助到了你请我喝杯咖啡吧😋** +支持作者 diff --git a/erupt-extra/erupt-flow/src/console/babel.config.js b/erupt-extra/erupt-flow/src/console/babel.config.js new file mode 100644 index 000000000..9deeedceb --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/babel.config.js @@ -0,0 +1,9 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset', + /* "env"*/ + ], + /* plugins: [ + "transform-vue-jsx" + ]*/ +} diff --git a/erupt-extra/erupt-flow/src/console/image.png b/erupt-extra/erupt-flow/src/console/image.png new file mode 100644 index 0000000000000000000000000000000000000000..32d89f3924c3e8872818c2e4fecc8f6fccaa192e GIT binary patch literal 73961 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 VUS&v{@<0v9JyU*)dSdeCe*h&*$LIh6 literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/package-lock.json b/erupt-extra/erupt-flow/src/console/package-lock.json new file mode 100644 index 000000000..70f0a8049 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/package-lock.json @@ -0,0 +1,13037 @@ +{ + "name": "client", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ant-design-vue/babel-helper-vue-transform-on": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/@ant-design-vue/babel-helper-vue-transform-on/download/@ant-design-vue/babel-helper-vue-transform-on-1.0.1.tgz", + "integrity": "sha1-0hnZL04fxeet0hHDR8f6AAUYtiM=", + "dev": true + }, + "@ant-design-vue/babel-plugin-jsx": { + "version": "1.0.0-rc.1", + "resolved": "https://registry.npm.taobao.org/@ant-design-vue/babel-plugin-jsx/download/@ant-design-vue/babel-plugin-jsx-1.0.0-rc.1.tgz", + "integrity": "sha1-rlbOy9qfCGkbz5Lf6Y4kFud9dYs=", + "dev": true, + "requires": { + "@ant-design-vue/babel-helper-vue-transform-on": "^1.0.0", + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.10.4.tgz", + "integrity": "sha1-Fo2ho26Q2miujUnA8bSMfGJJITo=", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.11.0", + "resolved": "https://registry.npm.taobao.org/@babel/compat-data/download/@babel/compat-data-7.11.0.tgz?cache=0&sync_timestamp=1596141256781&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcompat-data%2Fdownload%2F%40babel%2Fcompat-data-7.11.0.tgz", + "integrity": "sha1-6fc+/gmvE1W3I6fzmxG61jfXyZw=", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.11.6", + "resolved": "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.11.6.tgz?cache=0&sync_timestamp=1599146827519&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.11.6.tgz", + "integrity": "sha1-OpRV3HOH/xusRXcGULwTugShVlE=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.6", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.5", + "@babel/types": "^7.11.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.11.6", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.11.6.tgz?cache=0&sync_timestamp=1599146753105&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.11.6.tgz", + "integrity": "sha1-uGiQD4GxY7TUZOokVFxhy6xNxiA=", + "dev": true, + "requires": { + "@babel/types": "^7.11.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha1-W/DUlaP3V6w72ki1vzs7ownHK6M=", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha1-uwt18xv5jL+f8UPBrleLhydK4aM=", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.10.4.tgz?cache=0&sync_timestamp=1593521085687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-compilation-targets%2Fdownload%2F%40babel%2Fhelper-compilation-targets-7.10.4.tgz", + "integrity": "sha1-gEro4/BDdmB8x5G51H1UAnYzK9I=", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.10.5.tgz?cache=0&sync_timestamp=1594750826871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-create-class-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha1-n2FEa6gOgkCwpchcb9rIRZ1vJZ0=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha1-/dYNiFJGWaC2lZwFeZJeQlcU87g=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.10.5.tgz?cache=0&sync_timestamp=1594750826834&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-define-map%2Fdownload%2F%40babel%2Fhelper-define-map-7.10.5.tgz", + "integrity": "sha1-tTwQ23imQIABUmkrEzkxR6y5uzA=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.11.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.11.4.tgz?cache=0&sync_timestamp=1597948453171&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-explode-assignable-expression%2Fdownload%2F%40babel%2Fhelper-explode-assignable-expression-7.11.4.tgz", + "integrity": "sha1-LY40cCUswXq6kX7eeAPUp6J2pBs=", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.10.4.tgz?cache=0&sync_timestamp=1593522836308&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.10.4.tgz", + "integrity": "sha1-0tOyDFmtjEcRL6fSqUvAnV74Lxo=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha1-mMHL6g4jMvM/mkZhuM4VBbLBm6I=", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha1-1JsAHR1aaMpeZgTdoBpil/fJOB4=", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.11.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.11.0.tgz?cache=0&sync_timestamp=1596142785938&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-member-expression-to-functions%2Fdownload%2F%40babel%2Fhelper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha1-rmnIPYTugvS0L5bioJQQk1qPJt8=", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.10.4.tgz?cache=0&sync_timestamp=1593522826853&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-imports%2Fdownload%2F%40babel%2Fhelper-module-imports-7.10.4.tgz", + "integrity": "sha1-TFxUvgS9MWcKc4J5fXW5+i5bViA=", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.11.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.11.0.tgz?cache=0&sync_timestamp=1596142990701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-transforms%2Fdownload%2F%40babel%2Fhelper-module-transforms-7.11.0.tgz", + "integrity": "sha1-sW8lAinkchGr3YSzS2RzfCqy01k=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha1-UNyWQT1ZT5lad5BZBbBYk813lnM=", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.10.4.tgz?cache=0&sync_timestamp=1593521089859&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.10.4.tgz", + "integrity": "sha1-L3WoMSadT2d95JmG3/WZJ1M883U=", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.10.5.tgz?cache=0&sync_timestamp=1594750677873&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-regex%2Fdownload%2F%40babel%2Fhelper-regex-7.10.5.tgz", + "integrity": "sha1-Mt+7eYmQc8QVVXBToZvQVarlCuA=", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.11.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.11.4.tgz?cache=0&sync_timestamp=1597948453268&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-remap-async-to-generator%2Fdownload%2F%40babel%2Fhelper-remap-async-to-generator-7.11.4.tgz", + "integrity": "sha1-RHTqn3Q48YV14wsMrHhARbQCoS0=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.10.4.tgz", + "integrity": "sha1-1YXNk4jqBuYDHkzUS2cTy+rZ5s8=", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.10.4.tgz", + "integrity": "sha1-D1zNopRSd6KnotOoIeFTle3PNGE=", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-skip-transparent-expression-wrappers/download/@babel/helper-skip-transparent-expression-wrappers-7.11.0.tgz?cache=0&sync_timestamp=1596145389999&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-skip-transparent-expression-wrappers%2Fdownload%2F%40babel%2Fhelper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha1-7sFi8RLC9Y068K8SXju1dmUUZyk=", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.11.0.tgz?cache=0&sync_timestamp=1596142786225&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.11.0.tgz", + "integrity": "sha1-+KSRJErPamdhWKxCBykRuoOtCZ8=", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha1-p4x6clHgH2FlEtMbEK3PUq2l4NI=", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.10.4.tgz", + "integrity": "sha1-im9wHqsP8592W1oc/vQJmQ5iS4c=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.10.4.tgz?cache=0&sync_timestamp=1593522841291&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelpers%2Fdownload%2F%40babel%2Fhelpers-7.10.4.tgz", + "integrity": "sha1-Kr6w1yGv98Cpc3a54fb2XXpHUEQ=", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.10.4.tgz?cache=0&sync_timestamp=1593521087106&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.10.4.tgz", + "integrity": "sha1-fRvf1ldTU4+r5sOFls23bZrGAUM=", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.11.5", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.11.5.tgz?cache=0&sync_timestamp=1598904268134&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.11.5.tgz", + "integrity": "sha1-x/9jA99xCA7HpPW4wAPFjxz1EDc=", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.10.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-async-generator-functions%2Fdownload%2F%40babel%2Fplugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha1-NJHKvy98F5q4IGBs7Cf+0V4OhVg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.10.4.tgz?cache=0&sync_timestamp=1593522937004&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha1-ozv2Mto5ClnHqMVwBF0RFc13iAc=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.10.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.10.5.tgz?cache=0&sync_timestamp=1594750827074&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-decorators%2Fdownload%2F%40babel%2Fplugin-proposal-decorators-7.10.5.tgz", + "integrity": "sha1-QomLukeLxLGuJCpwOpU6etNQ/7Q=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-decorators": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.10.4.tgz?cache=0&sync_timestamp=1593521085849&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-dynamic-import%2Fdownload%2F%40babel%2Fplugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha1-uleibLmLN3QenVvKG4sN34KR8X4=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-export-namespace-from/download/@babel/plugin-proposal-export-namespace-from-7.10.4.tgz", + "integrity": "sha1-Vw2IO5EDFjez4pWO6jxDjmLAX1Q=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.10.4.tgz?cache=0&sync_timestamp=1593521092651&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-json-strings%2Fdownload%2F%40babel%2Fplugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha1-WT5ZxjUoFgIzvTIbGuvgggwjQds=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.11.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-logical-assignment-operators/download/@babel/plugin-proposal-logical-assignment-operators-7.11.0.tgz?cache=0&sync_timestamp=1596145269520&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-logical-assignment-operators%2Fdownload%2F%40babel%2Fplugin-proposal-logical-assignment-operators-7.11.0.tgz", + "integrity": "sha1-n4DkgsAwg8hxJd7hACa1hSfqIMg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz?cache=0&sync_timestamp=1593522818985&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator%2Fdownload%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha1-AqfpYfwy5tWy2wZJ4Bv4Dd7n4Eo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha1-zhWQ/wplrRKXCmCdeIVemkwa7wY=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.11.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.11.0.tgz?cache=0&sync_timestamp=1596142980964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha1-vYH5Wh90Z2DqQ7bC09YrEXkK0K8=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.10.4.tgz?cache=0&sync_timestamp=1593522975374&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-catch-binding%2Fdownload%2F%40babel%2Fplugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha1-Mck4MJ0kp4pJ1o/av/qoY3WFVN0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.11.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.11.0.tgz?cache=0&sync_timestamp=1596145014102&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-chaining%2Fdownload%2F%40babel%2Fplugin-proposal-optional-chaining-7.11.0.tgz", + "integrity": "sha1-3lhm0GRvav2quKVmOC/joiF1UHY=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-private-methods/download/@babel/plugin-proposal-private-methods-7.10.4.tgz?cache=0&sync_timestamp=1593522940799&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-private-methods%2Fdownload%2F%40babel%2Fplugin-proposal-private-methods-7.10.4.tgz", + "integrity": "sha1-sWDZcrj9ulx9ERoUX8jEIfwqaQk=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha1-RIPNpTBBzjQTt/4vAAImZd36p10=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha1-qYP7Gusuw/btBCohD2QOkOeG/g0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-class-properties/download/@babel/plugin-syntax-class-properties-7.10.4.tgz?cache=0&sync_timestamp=1593521086484&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-class-properties%2Fdownload%2F%40babel%2Fplugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha1-ZkTmoLqlWmH54yMfbJ7rbuRsEkw=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.10.4.tgz?cache=0&sync_timestamp=1593522820650&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-decorators%2Fdownload%2F%40babel%2Fplugin-syntax-decorators-7.10.4.tgz", + "integrity": "sha1-aFMIWyxCn50yLQL1pjUBjN6yNgw=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha1-Yr+Ysto80h1iYVT8lu5bPLaOrLM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-export-namespace-from/download/@babel/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha1-AolkqbqA28CUyRXEh618TnpmRlo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.10.4.tgz?cache=0&sync_timestamp=1593521121498&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-jsx%2Fdownload%2F%40babel%2Fplugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha1-Oauq48v3EMQ3PYQpSE5rohNAFmw=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-logical-assignment-operators/download/@babel/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha1-ypHvRjA1MESLkGZSusLp/plB9pk=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-nullish-coalescing-operator/download/@babel/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-numeric-separator/download/@babel/plugin-syntax-numeric-separator-7.10.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-numeric-separator%2Fdownload%2F%40babel%2Fplugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha1-YRGiZbz7Ag6579D9/X0mQCue1sE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-chaining/download/@babel/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha1-S764kXtU/PdoNk4KgfVg4zo+9X0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.10.4.tgz?cache=0&sync_timestamp=1593522484198&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-arrow-functions%2Fdownload%2F%40babel%2Fplugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha1-4ilg135pfHT0HFAdRNc9v4pqZM0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.10.4.tgz?cache=0&sync_timestamp=1593522851748&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-async-to-generator%2Fdownload%2F%40babel%2Fplugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha1-QaUBfknrbzzak5KlHu8pQFskWjc=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.10.4.tgz?cache=0&sync_timestamp=1593521982492&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoped-functions%2Fdownload%2F%40babel%2Fplugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha1-GvpZV0T3XkOpGvc7DZmOz+Trwug=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.11.1", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.11.1.tgz?cache=0&sync_timestamp=1596578814152&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoping%2Fdownload%2F%40babel%2Fplugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha1-W37+mIUr741lLAsoFEzZOp5LUhU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.10.4.tgz?cache=0&sync_timestamp=1593522856487&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-classes%2Fdownload%2F%40babel%2Fplugin-transform-classes-7.10.4.tgz", + "integrity": "sha1-QFE2rys+IYvEoZJiKLyRerGgrcc=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha1-ne2DqBboLe0o1S1LTsvdgQzfwOs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.10.4.tgz?cache=0&sync_timestamp=1593522993738&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-destructuring%2Fdownload%2F%40babel%2Fplugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha1-cN3Ss9G+qD0BUJ6bsl3bOnT8heU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha1-RpwgYhBcHragQOr0+sS0iAeDle4=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.10.4.tgz?cache=0&sync_timestamp=1593521255341&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-duplicate-keys%2Fdownload%2F%40babel%2Fplugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha1-aX5Qyf7hQ4D+hD0fMGspVhdDHkc=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.10.4.tgz?cache=0&sync_timestamp=1593522848226&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-exponentiation-operator%2Fdownload%2F%40babel%2Fplugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha1-WuM4xX+M9AAb2zVgeuZrktZlry4=", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.10.4.tgz?cache=0&sync_timestamp=1593522996190&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-for-of%2Fdownload%2F%40babel%2Fplugin-transform-for-of-7.10.4.tgz", + "integrity": "sha1-wIiS6IGdOl2ykDGxFa9RHbv+uuk=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.10.4.tgz?cache=0&sync_timestamp=1593522872485&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-function-name%2Fdownload%2F%40babel%2Fplugin-transform-function-name-7.10.4.tgz", + "integrity": "sha1-akZ4gOD8ljhRS6NpERgR3b4mRLc=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.10.4.tgz?cache=0&sync_timestamp=1593522938841&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-literals%2Fdownload%2F%40babel%2Fplugin-transform-literals-7.10.4.tgz", + "integrity": "sha1-n0K6CEEQChNfInEtDjkcRi9XHzw=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.10.4.tgz?cache=0&sync_timestamp=1593522821136&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-member-expression-literals%2Fdownload%2F%40babel%2Fplugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha1-sexE/PGVr8uNssYs2OVRyIG6+Lc=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.10.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.10.5.tgz?cache=0&sync_timestamp=1594750826922&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-amd%2Fdownload%2F%40babel%2Fplugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha1-G5zdrwXZ6Is6rTOcs+RFxPAgqbE=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha1-ZmZ8Pu2h6/eJbUHx8WsXEFovvKA=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.10.5.tgz?cache=0&sync_timestamp=1594750826566&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-systemjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha1-YnAJnIVAZmgbrp4F+H4bnK2+jIU=", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.10.4.tgz?cache=0&sync_timestamp=1593522846765&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-umd%2Fdownload%2F%40babel%2Fplugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha1-moSB/oG4JGVLOgtl2j34nz0hg54=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha1-eLTZeIELbzvPA/njGPL8DtQa7LY=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.10.4.tgz?cache=0&sync_timestamp=1593522999550&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-new-target%2Fdownload%2F%40babel%2Fplugin-transform-new-target-7.10.4.tgz", + "integrity": "sha1-kJfXU8t7Aky3OBo7LlLpUTqcaIg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.10.4.tgz?cache=0&sync_timestamp=1593522848107&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-object-super%2Fdownload%2F%40babel%2Fplugin-transform-object-super-7.10.4.tgz", + "integrity": "sha1-1xRsTROUM+emUm+IjGZ+MUoJOJQ=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.10.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.10.5.tgz?cache=0&sync_timestamp=1594750825750&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-parameters%2Fdownload%2F%40babel%2Fplugin-transform-parameters-7.10.5.tgz", + "integrity": "sha1-WdM51Y0LGVBDX0BD504lEABeLEo=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.10.4.tgz?cache=0&sync_timestamp=1593522821423&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-property-literals%2Fdownload%2F%40babel%2Fplugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha1-9v5UtlkDUimHhbg+3YFdIUxC48A=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha1-IBXlnYOQdOdoON4hWdtCGWb9i2M=", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.10.4.tgz?cache=0&sync_timestamp=1593522939590&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-reserved-words%2Fdownload%2F%40babel%2Fplugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha1-jyaCvNzvntMn4bCGFYXXAT+KVN0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.11.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.11.5.tgz", + "integrity": "sha1-8Qi8jgzzPDfaAxwJfR30cLOik/w=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha1-n9Jexc3VVbt/Rz5ebuHJce7eTdY=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.11.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.11.0.tgz?cache=0&sync_timestamp=1596144727364&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-spread%2Fdownload%2F%40babel%2Fplugin-transform-spread-7.11.0.tgz", + "integrity": "sha1-+oTTAPXk9XdS/kGm0bPFVPE/F8w=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha1-jziJ7oZXWBEwop2cyR18c7fEoo0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.10.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha1-eLxdYmpmQtszEtnQ8AH152Of3ow=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha1-lQnxp+7DHE7b/+E3wWzDP/C8W/w=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-escapes/download/@babel/plugin-transform-unicode-escapes-7.10.4.tgz", + "integrity": "sha1-/q5SM5HHZR3awRXa4KnQaFeJIAc=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha1-5W1x+SgvrG2wnIJ0IFVXbV5tgKg=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.11.5", + "resolved": "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.11.5.tgz?cache=0&sync_timestamp=1598904590837&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fpreset-env%2Fdownload%2F%40babel%2Fpreset-env-7.11.5.tgz", + "integrity": "sha1-GMtLk3nj6S/+qSwHRxqZopFOQnI=", + "dev": true, + "requires": { + "@babel/compat-data": "^7.11.0", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-export-namespace-from": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.11.0", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.11.5", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/@babel/preset-modules/download/@babel/preset-modules-0.1.4.tgz?cache=0&sync_timestamp=1598549685847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fpreset-modules%2Fdownload%2F%40babel%2Fpreset-modules-0.1.4.tgz", + "integrity": "sha1-Ni8raMZihClw/bXiVP/I/BwuQV4=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.11.2", + "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.11.2.tgz?cache=0&sync_timestamp=1596637820375&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.11.2.tgz", + "integrity": "sha1-9UnBPHVMxAuHZEufqfCaapX+BzY=", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.10.4.tgz?cache=0&sync_timestamp=1593522831608&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.10.4.tgz", + "integrity": "sha1-MlGZbEIA68cdGo/EBfupQPNrong=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.11.5", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.11.5.tgz?cache=0&sync_timestamp=1598904281596&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.11.5.tgz", + "integrity": "sha1-vnd7k7UY62127i4eodFD2qEeYcM=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.11.5", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.11.5.tgz?cache=0&sync_timestamp=1598904272861&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.11.5.tgz", + "integrity": "sha1-2d5XfQElLXfGgAzuA57mT691Zi0=", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@codemirror/autocomplete": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.0.2.tgz", + "integrity": "sha512-9PDjnllmXan/7Uax87KGORbxerDJ/cu10SB+n4Jz0zXMEvIh3+TGgZxhIvDOtaQ4jDBQEM7kHYW4vLdQB0DGZQ==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "@codemirror/commands": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/@codemirror/commands/-/commands-6.0.0.tgz", + "integrity": "sha512-nVJDPiCQXWXj5AZxqNVXyIM3nOYauF4Dko9NGPSwgVdK+lXWJQhI5LGhS/AvdG5b7u7/pTQBkrQmzkLWRBF62A==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "@codemirror/language": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-6.1.0.tgz", + "integrity": "sha512-CeqY80nvUFrJcXcBW115aNi06D0PS8NSW6nuJRSwbrYFkE0SfJnPfyLGrcM90AV95lqg5+4xUi99BCmzNaPGJg==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "@codemirror/lint": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/@codemirror/lint/-/lint-6.0.0.tgz", + "integrity": "sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/search": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/@codemirror/search/-/search-6.0.0.tgz", + "integrity": "sha512-rL0rd3AhI0TAsaJPUaEwC63KHLO7KL0Z/dYozXj6E7L3wNHRyx7RfE0/j5HsIf912EE5n2PCb4Vg0rGYmDv4UQ==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/state": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-6.0.1.tgz", + "integrity": "sha512-6vYgaXc4KjSY0BUfSVDJooGcoswg/RJZpq/ZGjsUYmY0KN1lmB8u03nv+jiG1ncUV5qoggyxFT5AGD5Ak+5Zrw==" + }, + "@codemirror/view": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/view/-/view-6.0.2.tgz", + "integrity": "sha512-mnVT/q1JvKPjpmjXJNeCi/xHyaJ3abGJsumIVpdQ1nE1MXAyHf7GHWt8QpWMUvDiqF0j+inkhVR2OviTdFFX7Q==", + "requires": { + "@codemirror/state": "^6.0.0", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz?cache=0&sync_timestamp=1593993832157&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Faddress%2Fdownload%2F%40hapi%2Faddress-2.1.4.tgz", + "integrity": "sha1-XWftQ/P9QaadS5/3tW58DR0KgeU=", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz?cache=0&sync_timestamp=1593915150444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fbourne%2Fdownload%2F%40hapi%2Fbourne-1.3.2.tgz", + "integrity": "sha1-CnCVreoGckPOMoPhtWuKj0U7JCo=", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.5.1.tgz?cache=0&sync_timestamp=1599008847431&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fhoek%2Fdownload%2F%40hapi%2Fhoek-8.5.1.tgz", + "integrity": "sha1-/elgZMpEbeyMVajC8TCVewcMbgY=", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz?cache=0&sync_timestamp=1595023381050&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fjoi%2Fdownload%2F%40hapi%2Fjoi-15.1.1.tgz", + "integrity": "sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc=", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.6.tgz?cache=0&sync_timestamp=1593916080558&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Ftopo%2Fdownload%2F%40hapi%2Ftopo-3.1.6.tgz", + "integrity": "sha1-aNk1+j6uf91asNf5U/MgXYsr/Ck=", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/@intervolga/optimize-cssnano-plugin/download/@intervolga/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha1-vnx4RhKLiPapsdEmGgrQbrXA/fg=", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@lezer/common": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@lezer/common/-/common-1.0.0.tgz", + "integrity": "sha512-ohydQe+Hb+w4oMDvXzs8uuJd2NoA3D8YDcLiuDsLqH+yflDTPEpgCsWI3/6rH5C3BAedtH1/R51dxENldQceEA==" + }, + "@lezer/highlight": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.0.0.tgz", + "integrity": "sha512-nsCnNtim90UKsB5YxoX65v3GEIw3iCHw9RM2DtdgkiqAbKh9pCdvi8AWNwkYf10Lu6fxNhXPpkpHbW6mihhvJA==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/lr": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@lezer/lr/-/lr-1.0.0.tgz", + "integrity": "sha512-k6DEqBh4HxqO/cVGedb6Ern6LS7K6IOzfydJ5WaqCR26v6UR9sIFyb6PS+5rPUs/mXgnBR/QQCW7RkyjSCMoQA==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz", + "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz", + "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=", + "dev": true + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.7.1", + "resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz", + "integrity": "sha1-cG9kvLSouWQrSK46zkRMcDNNYV0=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1592843133653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1598611771865&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/@soda/get-current-script/download/@soda/get-current-script-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40soda%2Fget-current-script%2Fdownload%2F%40soda%2Fget-current-script-1.0.2.tgz", + "integrity": "sha1-pTUV2yXYA4N0OBtzryC7Ty5QjYc=", + "dev": true + }, + "@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/@types/anymatch/download/@types/anymatch-1.3.1.tgz?cache=0&sync_timestamp=1596837568556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fanymatch%2Fdownload%2F%40types%2Fanymatch-1.3.1.tgz", + "integrity": "sha1-M2utwb7sudrMOL6izzKt9ieoQho=", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npm.taobao.org/@types/body-parser/download/@types/body-parser-1.19.0.tgz?cache=0&sync_timestamp=1596837811026&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbody-parser%2Fdownload%2F%40types%2Fbody-parser-1.19.0.tgz", + "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/@types/color-name/download/@types/color-name-1.1.1.tgz?cache=0&sync_timestamp=1596837707987&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fcolor-name%2Fdownload%2F%40types%2Fcolor-name-1.1.1.tgz", + "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=", + "dev": true + }, + "@types/connect": { + "version": "3.4.33", + "resolved": "https://registry.npm.taobao.org/@types/connect/download/@types/connect-3.4.33.tgz?cache=0&sync_timestamp=1596837850490&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fconnect%2Fdownload%2F%40types%2Fconnect-3.4.33.tgz", + "integrity": "sha1-MWEMkB7KVzuHE8MzCrxua59YhUY=", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.3", + "resolved": "https://registry.npm.taobao.org/@types/connect-history-api-fallback/download/@types/connect-history-api-fallback-1.3.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fconnect-history-api-fallback%2Fdownload%2F%40types%2Fconnect-history-api-fallback-1.3.3.tgz", + "integrity": "sha1-R3K3m4tTGF8PTJ3qsJI2uvdu47Q=", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.8", + "resolved": "https://registry.npm.taobao.org/@types/express/download/@types/express-4.17.8.tgz?cache=0&sync_timestamp=1598966419553&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress%2Fdownload%2F%40types%2Fexpress-4.17.8.tgz", + "integrity": "sha1-PfQpMpMxfmHGATfSc6LpbNjV8no=", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.12", + "resolved": "https://registry.npm.taobao.org/@types/express-serve-static-core/download/@types/express-serve-static-core-4.17.12.tgz?cache=0&sync_timestamp=1598975463001&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress-serve-static-core%2Fdownload%2F%40types%2Fexpress-serve-static-core-4.17.12.tgz", + "integrity": "sha1-mkh9p1dCXk8mfn0cVyAiavf4lZE=", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.3.tgz?cache=0&sync_timestamp=1596838298425&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fglob%2Fdownload%2F%40types%2Fglob-7.1.3.tgz", + "integrity": "sha1-5rqA82t9qtLGhazZJmOC5omFwYM=", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.4", + "resolved": "https://registry.npm.taobao.org/@types/http-proxy/download/@types/http-proxy-1.17.4.tgz?cache=0&sync_timestamp=1596840717330&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fhttp-proxy%2Fdownload%2F%40types%2Fhttp-proxy-1.17.4.tgz", + "integrity": "sha1-58kuPb4+E6p5lED/QubToXqdBFs=", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/http-proxy-middleware": { + "version": "0.19.3", + "resolved": "https://registry.npm.taobao.org/@types/http-proxy-middleware/download/@types/http-proxy-middleware-0.19.3.tgz?cache=0&sync_timestamp=1596840717379&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fhttp-proxy-middleware%2Fdownload%2F%40types%2Fhttp-proxy-middleware-0.19.3.tgz", + "integrity": "sha1-suuW+8D5rHJQtdnExTqt4ElJfQM=", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/http-proxy": "*", + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npm.taobao.org/@types/json-schema/download/@types/json-schema-7.0.6.tgz", + "integrity": "sha1-9MfsQ+gbMZqYFRFQMXCfJph4kfA=" + }, + "@types/mime": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/@types/mime/download/@types/mime-2.0.3.tgz?cache=0&sync_timestamp=1596840690654&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fmime%2Fdownload%2F%40types%2Fmime-2.0.3.tgz", + "integrity": "sha1-yJO3NyHbc2mZQ7/DZTsd63+qSjo=", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz", + "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=", + "dev": true + }, + "@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/@types/minimist/download/@types/minimist-1.2.0.tgz?cache=0&sync_timestamp=1596840692265&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fminimist%2Fdownload%2F%40types%2Fminimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "dev": true + }, + "@types/node": { + "version": "14.6.4", + "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-14.6.4.tgz?cache=0&sync_timestamp=1599169585298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.6.4.tgz", + "integrity": "sha1-oUXMC7FO+cR3c2G3u6+lz446y1o=", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.4.tgz", + "integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=", + "dev": true + }, + "@types/qs": { + "version": "6.9.4", + "resolved": "https://registry.npm.taobao.org/@types/qs/download/@types/qs-6.9.4.tgz", + "integrity": "sha1-pZ6FHBuhbAUT6hI4MN1jmgoVy2o=", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/@types/range-parser/download/@types/range-parser-1.2.3.tgz", + "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.5", + "resolved": "https://registry.npm.taobao.org/@types/serve-static/download/@types/serve-static-1.13.5.tgz?cache=0&sync_timestamp=1596840491857&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fserve-static%2Fdownload%2F%40types%2Fserve-static-1.13.5.tgz", + "integrity": "sha1-PSXZQaGEFdOrCS3vhG4TWgi7z1M=", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/@types/source-list-map/download/@types/source-list-map-0.1.2.tgz", + "integrity": "sha1-AHiDYGP/rxdBI0m7o2QIfgrALsk=", + "dev": true + }, + "@types/tapable": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/@types/tapable/download/@types/tapable-1.0.6.tgz", + "integrity": "sha1-qcpLcKGLJwzLK8Cqr+/R1Ia36nQ=", + "dev": true + }, + "@types/uglify-js": { + "version": "3.9.3", + "resolved": "https://registry.npm.taobao.org/@types/uglify-js/download/@types/uglify-js-3.9.3.tgz", + "integrity": "sha1-2U7WCOKVvFQkyWAOa4VlQHtrS2s=", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "@types/webpack": { + "version": "4.41.22", + "resolved": "https://registry.npm.taobao.org/@types/webpack/download/@types/webpack-4.41.22.tgz", + "integrity": "sha1-/5dYoXxr1JnkWbkeeFOYSMMtBzE=", + "dev": true, + "requires": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "@types/webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npm.taobao.org/@types/webpack-dev-server/download/@types/webpack-dev-server-3.11.0.tgz", + "integrity": "sha1-vMO4Xn3GrC2yUzBhBRPyIowvz7I=", + "dev": true, + "requires": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/http-proxy-middleware": "*", + "@types/serve-static": "*", + "@types/webpack": "*" + } + }, + "@types/webpack-sources": { + "version": "1.4.2", + "resolved": "https://registry.npm.taobao.org/@types/webpack-sources/download/@types/webpack-sources-1.4.2.tgz", + "integrity": "sha1-XT1N6gQAineakBNf+W+1wMnmKSw=", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz", + "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=", + "dev": true + } + } + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz", + "integrity": "sha1-BI/leZWNpAj7eosqPsBQtQpmEEA=", + "dev": true + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.1.2.tgz", + "integrity": "sha1-wKPm78Ai515CR7RIqPxrhvA+kcA=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + } + } + }, + "@vue/babel-preset-app": { + "version": "4.5.4", + "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-4.5.4.tgz", + "integrity": "sha1-uxZOirVWc8Vh5ug1EWMe2hnv1+Q=", + "dev": true, + "requires": { + "@ant-design-vue/babel-plugin-jsx": "^1.0.0-0", + "@babel/core": "^7.11.0", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "@vue/babel-preset-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.1.2.tgz", + "integrity": "sha1-LhaetMIE6jfKZsLqhaiAv8mdTyA=", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-sugar-functional-vue": "^1.1.2", + "@vue/babel-sugar-inject-h": "^1.1.2", + "@vue/babel-sugar-v-model": "^1.1.2", + "@vue/babel-sugar-v-on": "^1.1.2" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.1.2.tgz", + "integrity": "sha1-9+JPugnm8e5wEEVgqICAV1VfGpo=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.1.2.tgz", + "integrity": "sha1-ilJ2ttji7Rb/yAeKrZQjYnTm7fA=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.1.2.tgz", + "integrity": "sha1-H/b9G4ACI/ycsehNzrXlLXN6gZI=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + } + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.1.2.tgz", + "integrity": "sha1-su+ZuPL6sJ++rSWq1w70Lhz1sTs=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + } + } + }, + "@vue/cli-overlay": { + "version": "4.5.4", + "resolved": "https://registry.npm.taobao.org/@vue/cli-overlay/download/@vue/cli-overlay-4.5.4.tgz", + "integrity": "sha1-4H48zC5Ndw1P29Rc3ed31ZKCLBk=", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "4.5.4", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-4.5.4.tgz", + "integrity": "sha1-oBzcs9RgZGdd2I1htkCtrcyFHis=", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.4", + "@vue/cli-shared-utils": "^4.5.4", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + } + }, + "@vue/cli-plugin-eslint": { + "version": "4.5.4", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-4.5.4.tgz", + "integrity": "sha1-Dx8wer/h5K1n3Ll2k2QJQrFfrnY=", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.4", + "eslint-loader": "^2.2.1", + "globby": "^9.2.0", + "inquirer": "^7.1.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + } + }, + "@vue/cli-plugin-router": { + "version": "4.5.4", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-router/download/@vue/cli-plugin-router-4.5.4.tgz", + "integrity": "sha1-BvIkCMftas7dv3MCy0eik7evQ0c=", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.4" + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.5.4", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-vuex/download/@vue/cli-plugin-vuex-4.5.4.tgz", + "integrity": "sha1-YpbjBziPYRMhF+CsAxiAE2UrDFU=", + "dev": true + }, + "@vue/cli-service": { + "version": "4.5.4", + "resolved": "https://registry.npm.taobao.org/@vue/cli-service/download/@vue/cli-service-4.5.4.tgz", + "integrity": "sha1-+QPt9VXRB0BGJN4v7VmW2oztxSQ=", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@soda/get-current-script": "^1.0.0", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.4", + "@vue/cli-plugin-router": "^4.5.4", + "@vue/cli-plugin-vuex": "^4.5.4", + "@vue/cli-shared-utils": "^4.5.4", + "@vue/component-compiler-utils": "^3.1.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", + "postcss-loader": "^3.0.0", + "ssri": "^7.1.0", + "terser-webpack-plugin": "^2.3.6", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-loader-v16": "npm:vue-loader@^16.0.0-beta.3", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.4.0.tgz?cache=0&sync_timestamp=1597237468154&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.4.0.tgz", + "integrity": "sha1-4a1IbmxUUBY0xsOXxcEh2qODYHw=", + "dev": true + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz?cache=0&sync_timestamp=1594428108619&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-13.0.1.tgz", + "integrity": "sha1-qAAMIWlwiQgvhSh6GuxuOCAkpxw=", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz", + "integrity": "sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz", + "integrity": "sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-7.1.0.tgz", + "integrity": "sha1-ksJBv23oI2W1x/tL126XVSLhKU0=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "terser-webpack-plugin": { + "version": "2.3.8", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.8.tgz?cache=0&sync_timestamp=1597229595508&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-2.3.8.tgz", + "integrity": "sha1-iUdkoZsHQ/L3BOfCqEjFKDppZyQ=", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.5.4", + "resolved": "https://registry.npm.taobao.org/@vue/cli-shared-utils/download/@vue/cli-shared-utils-4.5.4.tgz?cache=0&sync_timestamp=1597717139051&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-shared-utils%2Fdownload%2F%40vue%2Fcli-shared-utils-4.5.4.tgz", + "integrity": "sha1-7Taylx3AJlP38q1OZrvpUQ4b1BQ=", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "@vue/component-compiler-utils": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.2.0.tgz?cache=0&sync_timestamp=1595427755828&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcomponent-compiler-utils%2Fdownload%2F%40vue%2Fcomponent-compiler-utils-3.2.0.tgz", + "integrity": "sha1-j4UYLO7Sjps8dTE95mn4MWbRHl0=", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz?cache=0&sync_timestamp=1594427573763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.2.tgz?cache=0&sync_timestamp=1595814732688&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fpreload-webpack-plugin%2Fdownload%2F%40vue%2Fpreload-webpack-plugin-1.1.2.tgz", + "integrity": "sha1-zrkktOyzucQ4ccekKaAvhCPmIas=", + "dev": true + }, + "@vue/web-component-wrapper": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.2.0.tgz", + "integrity": "sha1-uw5G8VhafiibTuYGfcxaauYvHdE=", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.9.0.tgz", + "integrity": "sha1-vYUGBLQEJFmlpBzX0zjL7Wle2WQ=", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha1-PD07Jxvd/ITesA9xNEQ4MR1S/7Q=", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.9.0.tgz", + "integrity": "sha1-ID9nbjM7lsnaLuqzzO8zxFkotqI=", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.9.0.tgz", + "integrity": "sha1-oUQtJpxf6yP8vJ73WdrDVH8p3gA=", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.9.0.tgz", + "integrity": "sha1-ZH+Iks0gQ6gqwMjF51w28dkVnyc=", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.9.0.tgz", + "integrity": "sha1-wFJWtxJEIUZx9LCOwQitY7cO3bg=", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.9.0.tgz", + "integrity": "sha1-JdiIS3aDmHGgimxvgGw5ee9xLwc=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha1-T+2L6sm4wU+MWLcNEk1UndH+V5A=", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.9.0.tgz", + "integrity": "sha1-WkE41aYpK6GLBMWuSXF+QWeWU0Y=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.9.0.tgz", + "integrity": "sha1-Fceg+6roP7JhQ7us9tbfFwKtOeQ=", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.9.0.tgz", + "integrity": "sha1-8Zygt2ptxVYjoJz/p2noOPoeHJU=", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.9.0.tgz", + "integrity": "sha1-BNM7Y2945qaBMifoJAL3Y3tiKas=", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.9.0.tgz", + "integrity": "sha1-P+bXnT8PkiGDqoYALELdJWz+6c8=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.9.0.tgz", + "integrity": "sha1-ULxw7Gje2OJ2OwGhQYv0NJGnpJw=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.9.0.tgz", + "integrity": "sha1-IhEYHlsxMmRDzIES658LkChyGmE=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.9.0.tgz", + "integrity": "sha1-nUjkSCbfSmWYKUqmyHRp1kL/9l4=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.9.0.tgz", + "integrity": "sha1-MDERXXmsW9JhVWzsw/qQo+9FGRQ=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.9.0.tgz", + "integrity": "sha1-STXVTIX+9jewDOn1I3dFHQDUeJk=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz", + "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz", + "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", + "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.1.tgz?cache=0&sync_timestamp=1597237468154&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.1.tgz", + "integrity": "sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ=", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.2.0.tgz", + "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-7.2.0.tgz?cache=0&sync_timestamp=1597235812490&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-walk%2Fdownload%2Facorn-walk-7.2.0.tgz", + "integrity": "sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w=", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz", + "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=", + "dev": true + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.1.0.tgz?cache=0&sync_timestamp=1598047329122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faggregate-error%2Fdownload%2Faggregate-error-3.1.0.tgz", + "integrity": "sha1-kmcP9Q9TWb23o+DUDQ7DDFc3aHo=", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.4", + "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.4.tgz?cache=0&sync_timestamp=1597480799381&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.4.tgz", + "integrity": "sha1-BhT6zEUiEn+nE0Rca/0+vTduIjQ=", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz", + "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=", + "dev": true + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1595907059959&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz", + "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=" + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz", + "integrity": "sha1-46PaS/uubIapwoViXeEkojQCb78=", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.1.tgz", + "integrity": "sha1-pcR8xDGB8fOP/XB2g3cA05VSKmE=", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.11.0.tgz", + "integrity": "sha1-l6vwhyMQ/tiKXEZrJWgVdhReM/E=", + "dev": true + } + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-3.1.1.tgz", + "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz", + "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=", + "dev": true + }, + "arch": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/arch/download/arch-2.1.2.tgz", + "integrity": "sha1-DFK75zRLtPomDEQ9LLrZwA/y8L8=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-5.4.1.tgz", + "integrity": "sha1-EamAuE67kXgc41sP3C7ilON4Pwc=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz", + "integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz", + "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz", + "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz", + "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=", + "dev": true + }, + "async-validator": { + "version": "1.8.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz", + "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", + "requires": { + "babel-runtime": "6.x" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=", + "dev": true + }, + "autoprefixer": { + "version": "9.8.6", + "resolved": "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.8.6.tgz?cache=0&sync_timestamp=1596140678387&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fautoprefixer%2Fdownload%2Fautoprefixer-9.8.6.tgz", + "integrity": "sha1-O3NZTKG/kmYyDFrPFYjXTep0IQ8=", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.10.1", + "resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.10.1.tgz?cache=0&sync_timestamp=1597238704875&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.10.1.tgz", + "integrity": "sha1-4eguTz6Zniz9YbFhKA0WoRH4ZCg=", + "dev": true + }, + "axios": { + "version": "0.20.0", + "resolved": "https://registry.npm.taobao.org/axios/download/axios-0.20.0.tgz?cache=0&sync_timestamp=1597979584536&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.20.0.tgz", + "integrity": "sha1-BXujDwSIRpSZOozQf6OUz/EcUL0=", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-code-frame/download/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1592843133653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1598611771865&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz", + "integrity": "sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-helper-builder-binary-assignment-operator-visitor/download/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-helper-call-delegate/download/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-helper-define-map/download/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-helper-explode-assignable-expression/download/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-helper-function-name/download/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-helper-get-function-arity/download/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-helper-hoist-variables/download/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-helper-optimise-call-expression/download/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-helper-regex/download/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-helper-remap-async-to-generator/download/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-helper-replace-supers/download/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY=" + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.1.0.tgz", + "integrity": "sha1-xhHVESvVIJq+i5+oTD5NolJ18cM=", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npm.taobao.org/babel-messages/download/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-check-es2015-constants/download/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha1-hP2hnJduxcbe/vV/lCez3vZuF6M=", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-syntax-async-functions/download/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-syntax-exponentiation-operator/download/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-syntax-jsx/download/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-syntax-trailing-function-commas/download/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-async-to-generator/download/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-arrow-functions/download/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-block-scoped-functions/download/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-block-scoping/download/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-classes/download/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-computed-properties/download/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-destructuring/download/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-duplicate-keys/download/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-for-of/download/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-function-name/download/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-literals/download/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-modules-amd/download/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-modules-commonjs/download/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha1-WKeThjqefKhwvcWogRF/+sJ9tvM=", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-modules-systemjs/download/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-modules-umd/download/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-object-super/download/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-parameters/download/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-shorthand-properties/download/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-spread/download/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-sticky-regex/download/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-template-literals/download/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-typeof-symbol/download/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-es2015-unicode-regex/download/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-exponentiation-operator/download/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-regenerator/download/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + }, + "dependencies": { + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.10.1.tgz?cache=0&sync_timestamp=1593557394730&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-transform%2Fdownload%2Fregenerator-transform-0.10.1.tgz", + "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + } + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-strict-mode/download/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-vue-jsx": { + "version": "3.7.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-vue-jsx/download/babel-plugin-transform-vue-jsx-3.7.0.tgz", + "integrity": "sha1-1ASS5mkqNrWU9+mhko9D6Wl0CWA=", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/babel-preset-env/download/babel-preset-env-1.7.0.tgz", + "integrity": "sha1-3qefpOvriDzTXasH4mDBycBN93o=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "dependencies": { + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-3.2.8.tgz?cache=0&sync_timestamp=1599675930923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-3.2.8.tgz", + "integrity": "sha1-sABTYdZHHw9ZUnl6dvyYXx+Xj8Y=", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-2.6.11.tgz", + "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz?cache=0&sync_timestamp=1595456105304&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.11.1.tgz", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-template/download/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-traverse/download/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-9.18.0.tgz?cache=0&sync_timestamp=1596709342600&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-9.18.0.tgz", + "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-types/download/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npm.taobao.org/babylon/download/babylon-6.18.0.tgz", + "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz", + "integrity": "sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz", + "integrity": "sha1-MlyGGoIryzWKQceKM7jm4ght3n8=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz", + "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=" + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.1.0.tgz", + "integrity": "sha1-MPpAyef+B9vIlWeM0ocCTeokHdk=", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz", + "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz", + "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=", + "dev": true + }, + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-5.1.3.tgz", + "integrity": "sha1-vsoAVAj2Quvr6oCwQrTRjSrA7ms=", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz", + "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz", + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz", + "integrity": "sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz", + "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz", + "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz", + "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.2.1.tgz?cache=0&sync_timestamp=1596557838450&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserify-sign%2Fdownload%2Fbrowserify-sign-4.2.1.tgz", + "integrity": "sha1-6vSt1G3VS+O7OzbAzxWrvrp5VsM=", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz", + "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz", + "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.14.0", + "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.14.0.tgz?cache=0&sync_timestamp=1596754416737&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.14.0.tgz", + "integrity": "sha1-KQiVGr/k7Jhze3LzTDvO3I1DsAA=", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001111", + "electron-to-chromium": "^1.3.523", + "escalade": "^3.0.2", + "node-releases": "^1.1.60" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz", + "integrity": "sha1-Iw6tNEACmIZEhBqwJEr4xEu+Pvg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz", + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz", + "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=", + "dev": true + }, + "buffer-json": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/buffer-json/download/buffer-json-2.0.0.tgz", + "integrity": "sha1-9z4TseQvGW/i/WfQAcfXEH7dfCM=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz", + "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.4.tgz?cache=0&sync_timestamp=1594428108619&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-12.0.4.tgz", + "integrity": "sha1-ZovL0QWutfHZL+JVcOyVJcj6pAw=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-loader": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/cache-loader/download/cache-loader-4.1.0.tgz", + "integrity": "sha1-mUjK41OuwKH8ser9ojAIFuyFOH4=", + "dev": true, + "requires": { + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz", + "integrity": "sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz", + "integrity": "sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-6.0.0.tgz", + "integrity": "sha1-Uln3ww414njxvcKk2RIws3ytmB4=", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz", + "integrity": "sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001452", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001452.tgz", + "integrity": "sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w==", + "dev": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha1-I6xhPMmoVuT4j/i7c7u16YmCXPc=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1592843133653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1594010660915&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz", + "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", + "dev": true + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npm.taobao.org/check-types/download/check-types-8.0.3.tgz", + "integrity": "sha1-M1bMoZyIlUTy16le1JzlCKDs9VI=", + "dev": true + }, + "chokidar": { + "version": "3.4.2", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.4.2.tgz?cache=0&sync_timestamp=1596728921978&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.4.2.tgz", + "integrity": "sha1-ONyOZY3sOAl0HrPve7Ckf+QkIy0=", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz", + "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz", + "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz", + "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz", + "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/chownr/download/chownr-1.1.4.tgz", + "integrity": "sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs=", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.2.tgz", + "integrity": "sha1-I0CQ7pfH1K0aLEvq4nUF3v/GCKQ=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz", + "integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.3.tgz", + "integrity": "sha1-UHtd59l7SO5T2ErbAWD/YhY4D3g=", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/clean-stack/download/clean-stack-2.2.0.tgz?cache=0&sync_timestamp=1592035183333&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclean-stack%2Fdownload%2Fclean-stack-2.2.0.tgz", + "integrity": "sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-highlight": { + "version": "2.1.4", + "resolved": "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.4.tgz", + "integrity": "sha1-CYy2Qs8X9CrcHBFF4H+WDsTXUis=", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "highlight.js": "^9.6.0", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^5.1.1", + "yargs": "^15.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-3.0.0.tgz?cache=0&sync_timestamp=1592843133653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-3.0.0.tgz", + "integrity": "sha1-P3PCv1JlkfV0zEksUeJFY0n4ROQ=", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1577797756584&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1598611771865&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.4.0.tgz?cache=0&sync_timestamp=1595080364429&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-spinners%2Fdownload%2Fcli-spinners-2.4.0.tgz", + "integrity": "sha1-xiVtsha4eM+6RyDnGc7Hz3JoXX8=", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-3.0.0.tgz", + "integrity": "sha1-ovSEN6LKqaIkNueUvwceyeYc7fY=", + "dev": true + }, + "clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.3.0.tgz", + "integrity": "sha1-PCkDZQxo5GqRs4iYW8J3QofbopA=", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.2.0.tgz", + "integrity": "sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz", + "integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz", + "integrity": "sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM=", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "codemirror": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-6.0.0.tgz", + "integrity": "sha512-c4XR9QtDn+NhKLM2FBsnRn9SFdRH7G6594DYC/fyKKIsTOcdLF0WNWRd+f6kNyd5j1vgYPucbIeq2XkywYCwhA==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz", + "integrity": "sha1-aBSOf4XUGtdknF+oyBBvCY0inhA=", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz", + "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/colorette/download/colorette-1.2.1.tgz?cache=0&sync_timestamp=1593955762018&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolorette%2Fdownload%2Fcolorette-1.2.1.tgz", + "integrity": "sha1-TQuSEyXBT6+SYzCGpTbbbolWSxs=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1598576076977&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz", + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz", + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npm.taobao.org/compressible/download/compressible-2.0.18.tgz", + "integrity": "sha1-r1PMprBw1MPAdQ+9dyhqbXzEb7o=", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz", + "integrity": "sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.2.0.tgz", + "integrity": "sha1-ZwY871fOts9Jk6KrOlWECujEkzY=", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz", + "integrity": "sha1-IasEMjXHGgfUXZqtmFk7DbpWurc=", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz", + "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.7.0.tgz", + "integrity": "sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz", + "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz", + "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-5.1.2.tgz?cache=0&sync_timestamp=1598891316380&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcopy-webpack-plugin%2Fdownload%2Fcopy-webpack-plugin-5.1.2.tgz", + "integrity": "sha1-ioieHcr6bJHGzUvhrRWPHTgjuuI=", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz", + "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.6.5.tgz", + "integrity": "sha1-c5XcJzrzf7LlDpvT2f6EEoUjHRo=" + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npm.taobao.org/core-js-compat/download/core-js-compat-3.6.5.tgz", + "integrity": "sha1-KlHZpOJd/W5pAlGqgfmePAVIHxw=", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz", + "integrity": "sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz?cache=0&sync_timestamp=1596310657948&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcosmiconfig%2Fdownload%2Fcosmiconfig-5.2.1.tgz", + "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1598129230057&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz", + "integrity": "sha1-1uf0v/pmc2CFoHYv06YyaE2rzE4=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz", + "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz", + "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "crelt": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/crelt/-/crelt-1.0.5.tgz", + "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz", + "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha1-wZiUD2OnbX42wecQGLABchBUyyI=", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/css-loader/download/css-loader-3.6.0.tgz?cache=0&sync_timestamp=1598285555269&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-loader%2Fdownload%2Fcss-loader-3.6.0.tgz", + "integrity": "sha1-Lkssfm4tJ/jI8o9hv/zS5ske9kU=", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/css-select/download/css-select-2.1.0.tgz", + "integrity": "sha1-ajRlM1ZjWTSoG6ymjQJVQyEF2+8=", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc=", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha1-mL69YsTB2flg7DQM+fdSLjBwmiI=", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "css-what": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-3.3.0.tgz", + "integrity": "sha1-EP7Glqns4uWRrHctdZqsq6w4zTk=", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz", + "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npm.taobao.org/cssnano/download/cssnano-4.1.10.tgz?cache=0&sync_timestamp=1599151750505&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcssnano%2Fdownload%2Fcssnano-4.1.10.tgz", + "integrity": "sha1-CsQfCxPRPUZUh+ERt3jULaYxuLI=", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz?cache=0&sync_timestamp=1599151750629&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcssnano-preset-default%2Fdownload%2Fcssnano-preset-default-4.0.7.tgz", + "integrity": "sha1-UexmLM/KD4izltzZZ5zbkxvhf3Y=", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M=", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/csso/download/csso-4.0.3.tgz", + "integrity": "sha1-DZmF3IUsfMKyys+74QeQFNGo6QM=", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha1-K/8//huz93bPfu/ZHuXLp3oUnus=", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.6.tgz", + "integrity": "sha1-hS3GD8ql2qLoz2yRicRA7T4EKXg=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz", + "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz", + "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=" + }, + "default-gateway": { + "version": "5.0.5", + "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-5.0.5.tgz", + "integrity": "sha1-T9a9XShV05s0zFpZUFSG6ar8mxA=", + "dev": true, + "requires": { + "execa": "^3.3.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.3.tgz", + "integrity": "sha1-9zqFudXUHQRVUcF34ogtSshXKKY=", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-3.4.0.tgz?cache=0&sync_timestamp=1594145159577&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-3.4.0.tgz", + "integrity": "sha1-wI7UVQ72XYWPrCaf/IVyRG8364k=", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz?cache=0&sync_timestamp=1597056455691&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-5.2.0.tgz", + "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz", + "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM=", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1596095644798&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-4.0.1.tgz", + "integrity": "sha1-t+zR5e1T2o43pV4cImnguX7XSOo=", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz?cache=0&sync_timestamp=1597003951681&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fonetime%2Fdownload%2Fonetime-5.1.2.tgz", + "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz", + "integrity": "sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz", + "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz", + "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz", + "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz", + "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz", + "integrity": "sha1-no8RciLqRKMf86FWwEm5kFKp8LQ=", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz", + "integrity": "sha1-MQko/u+cnsxltosXaTAYpmXOoXU=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/des.js/download/des.js-1.0.1.tgz", + "integrity": "sha1-U4IULhvcU/hdhtU+X0qn3rkeCEM=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz", + "integrity": "sha1-AU7o+PZpxcWAI9pkuBecCDooxGw=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz", + "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz", + "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/dns-packet/download/dns-packet-1.3.1.tgz", + "integrity": "sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo=", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz", + "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz", + "integrity": "sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g=", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.2.tgz", + "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.0.1.tgz", + "integrity": "sha1-H4vf6R9aeAYydOgDtL3O326U+U0=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz?cache=0&sync_timestamp=1597693715407&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomain-browser%2Fdownload%2Fdomain-browser-1.2.0.tgz", + "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz", + "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz", + "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz?cache=0&sync_timestamp=1597680507221&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.7.0.tgz", + "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-5.2.0.tgz?cache=0&sync_timestamp=1597574926376&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdot-prop%2Fdownload%2Fdot-prop-5.2.0.tgz", + "integrity": "sha1-w07MKVVtxF8fTCJpe29JBODMT8s=", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npm.taobao.org/dotenv/download/dotenv-8.2.0.tgz", + "integrity": "sha1-l+YZJZradQ7qPk6j4mvO6lQksWo=", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz", + "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.2.tgz?cache=0&sync_timestamp=1597220926027&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fduplexer%2Fdownload%2Fduplexer-0.1.2.tgz", + "integrity": "sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz", + "integrity": "sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-stack": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.0.tgz", + "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npm.taobao.org/ejs/download/ejs-2.7.4.tgz?cache=0&sync_timestamp=1597678480118&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fejs%2Fdownload%2Fejs-2.7.4.tgz", + "integrity": "sha1-SGYSh1c9zFPjZsehrlLDoSDuybo=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.561", + "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.561.tgz?cache=0&sync_timestamp=1599161906435&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.561.tgz", + "integrity": "sha1-kEEaj0WiJ+48+SGSl7JRW1pTWeU=", + "dev": true + }, + "element-ui": { + "version": "2.15.8", + "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.8.tgz", + "integrity": "sha512-N54zxosRFqpYax3APY3GeRmtOZwIls6Z756WM0kdPZ5Q92PIeKHnZgF1StlamIg9bLxP1k+qdhTZvIeQlim09A==", + "requires": { + "async-validator": "~1.8.1", + "babel-helper-vue-jsx-merge-props": "^2.0.0", + "deepmerge": "^1.2.0", + "normalize-wheel": "^1.0.1", + "resize-observer-polyfill": "^1.5.0", + "throttle-debounce": "^1.0.1" + } + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.3.tgz?cache=0&sync_timestamp=1592492754083&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.3.tgz", + "integrity": "sha1-y1nrLv2vc6C9eMzXAVpirW4Pk9Y=", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz", + "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz", + "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz", + "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.3.0.tgz?cache=0&sync_timestamp=1594970571823&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.3.0.tgz", + "integrity": "sha1-O4BvO/r8HsfeaVUe+TzKRsFwQSY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.5.0.tgz", + "integrity": "sha1-MkwBKIuIZSlm0WHbd4OHIIRajjw=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.0.3.tgz", + "integrity": "sha1-XEh+V0Krk8Fau12iJ1m4WQ7AO38=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz", + "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.6.tgz", + "integrity": "sha1-WpmnB716TFinl5AtSNgoA+3mqtg=", + "dev": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.6.tgz?cache=0&sync_timestamp=1597446224648&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fes-abstract%2Fdownload%2Fes-abstract-1.17.6.tgz", + "integrity": "sha1-kUIHFweFeyysx7iey2cDFsPi1So=", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/escalade/download/escalade-3.0.2.tgz?cache=0&sync_timestamp=1594742923342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescalade%2Fdownload%2Fescalade-3.0.2.tgz", + "integrity": "sha1-algNcO24eIDyK0yR0NVgeN9pYsQ=", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-6.8.0.tgz?cache=0&sync_timestamp=1598991497283&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-6.8.0.tgz", + "integrity": "sha1-YiYtZylzn5J1cjgkMC+yJ8jJP/s=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.0.tgz", + "integrity": "sha1-0Plx3+WcaeDK2mhLI9Sdv4JgDOU=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-12.4.0.tgz?cache=0&sync_timestamp=1596709342600&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-12.4.0.tgz", + "integrity": "sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.2.1.tgz", + "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.8.1.tgz", + "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=", + "dev": true + } + } + }, + "eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/eslint-loader/download/eslint-loader-2.2.1.tgz", + "integrity": "sha1-KLnBLaVAV68IReKmEScBova/gzc=", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + } + }, + "eslint-plugin-vue": { + "version": "6.2.2", + "resolved": "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-6.2.2.tgz?cache=0&sync_timestamp=1598607185105&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-6.2.2.tgz", + "integrity": "sha1-J/7NmjokeJsPER7N1UCp5WGY4P4=", + "dev": true, + "requires": { + "natural-compare": "^1.4.0", + "semver": "^5.6.0", + "vue-eslint-parser": "^7.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz", + "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.3.tgz?cache=0&sync_timestamp=1592222029130&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-utils%2Fdownload%2Feslint-utils-1.4.3.tgz", + "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz?cache=0&sync_timestamp=1597435587476&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.3.0.tgz", + "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz", + "integrity": "sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o=", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.4.0.tgz?cache=0&sync_timestamp=1597237468154&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.4.0.tgz", + "integrity": "sha1-4a1IbmxUUBY0xsOXxcEh2qODYHw=", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.3.1.tgz", + "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz?cache=0&sync_timestamp=1596643087695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.2.0.tgz", + "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.3.0.tgz?cache=0&sync_timestamp=1598898247102&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesrecurse%2Fdownload%2Fesrecurse-4.3.0.tgz", + "integrity": "sha1-eteWTWeauyi+5yzsY3WLHF0smSE=", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz?cache=0&sync_timestamp=1596643087695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.2.0.tgz", + "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz?cache=0&sync_timestamp=1596643087695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-4.3.0.tgz", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz", + "integrity": "sha1-9o2Ba8KfHsAsU53FjI3UDOcss24=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.7.tgz?cache=0&sync_timestamp=1598517809015&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-4.0.7.tgz", + "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=", + "dev": true + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/events/download/events-3.2.0.tgz", + "integrity": "sha1-k7h8GPjvzUICpGGuxN/AVWtjk3k=", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/eventsource/download/eventsource-1.0.7.tgz", + "integrity": "sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA=", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1594145159577&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", + "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz", + "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz", + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz", + "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz", + "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=" + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&sync_timestamp=1592290365180&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz", + "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.2.tgz", + "integrity": "sha1-tO7oFIq7Adzx0aw0Nn1Z4S+mHW4=", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/figures/download/figures-3.2.0.tgz", + "integrity": "sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz", + "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/file-loader/download/file-loader-4.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-loader%2Fdownload%2Ffile-loader-4.3.0.tgz", + "integrity": "sha1-eA8ED3KbPRgBnyBgX3I+hEuKWK8=", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz", + "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=", + "dev": true, + "optional": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npm.taobao.org/filesize/download/filesize-3.6.1.tgz", + "integrity": "sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz", + "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz", + "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-2.0.2.tgz", + "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz", + "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.13.0", + "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.13.0.tgz?cache=0&sync_timestamp=1597057976909&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.13.0.tgz", + "integrity": "sha1-tC6Nk6Kn7qXtiGM2dtZZe8jjhNs=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz", + "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz", + "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-2.1.0.tgz", + "integrity": "sha1-f1A2/b8SxjwWkZDL5BmchSJx+fs=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.3.tgz", + "integrity": "sha1-+3OHA66NL5/pAMM4Nt3r7ouX8j4=", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.1.tgz", + "integrity": "sha1-WPQ2H/mH5f9uHnohCCeqNx6qwmk=", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz", + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz?cache=0&sync_timestamp=1597056455691&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz", + "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz?cache=0&sync_timestamp=1596709342600&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-11.12.0.tgz", + "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz", + "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "requires": { + "delegate": "^3.1.2" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.4.tgz", + "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=" + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz", + "integrity": "sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.1.tgz", + "integrity": "sha1-hX95zjWVgMNA1DCBzGSJcNC7I04=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.5.tgz?cache=0&sync_timestamp=1596082578993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhar-validator%2Fdownload%2Fhar-validator-5.1.5.tgz", + "integrity": "sha1-HwgDufjLIMD6E4It8ezds2veHv0=", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz?cache=0&sync_timestamp=1577797756584&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-flag%2Fdownload%2Fhas-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/hash-base/download/hash-base-3.1.0.tgz", + "integrity": "sha1-VcOB2eBuHSmXqIO0o/3f5/DTrzM=", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz", + "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", + "dev": true + } + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-2.0.0.tgz", + "integrity": "sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz", + "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=", + "dev": true + }, + "highlight.js": { + "version": "9.18.3", + "resolved": "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.18.3.tgz", + "integrity": "sha1-oaCiAo1eMUniOA+Khl7oUWcD1jQ=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz", + "integrity": "sha1-YJIH1mEQADOpqUAq096mdzgcGx0=", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.8.tgz?cache=0&sync_timestamp=1594428017031&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.8.tgz", + "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz", + "integrity": "sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c=", + "dev": true + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/html-entities/download/html-entities-1.3.1.tgz", + "integrity": "sha1-+5oaS1sUxdq6gtPjTGrk/nAaDkQ=", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz", + "integrity": "sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw=", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1598576076977&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz", + "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=", + "dev": true + } + } + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-3.1.0.tgz", + "integrity": "sha1-e15vfmZen7QfMAB+2eDUHpf7IUA=", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz", + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz", + "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz", + "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz", + "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz?cache=0&sync_timestamp=1593407676273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.2.tgz", + "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.1.tgz", + "integrity": "sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz", + "integrity": "sha1-xbHNFPUK6uCatsWf5jujOV/k36M=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/icss-utils/download/icss-utils-4.1.1.tgz", + "integrity": "sha1-IRcLU3ie4nRHwvR91oMIFAP5pGc=", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz", + "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz?cache=0&sync_timestamp=1599125275972&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimage-size%2Fdownload%2Fimage-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "optional": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz", + "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-4.0.0.tgz", + "integrity": "sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz", + "integrity": "sha1-xM78qo5RBRwqQLos6KPScpWvlGc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=", + "dev": true + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-7.3.3.tgz?cache=0&sync_timestamp=1595475980671&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-7.3.3.tgz", + "integrity": "sha1-BNF2sq8Er8FXqD/XwQDpjuCq0AM=", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1592843133653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz", + "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz", + "integrity": "sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1577797756584&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1596095644798&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz?cache=0&sync_timestamp=1597003951681&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fonetime%2Fdownload%2Fonetime-5.1.2.tgz", + "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz", + "integrity": "sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1598611771865&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz?cache=0&sync_timestamp=1596563074575&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finternal-ip%2Fdownload%2Finternal-ip-4.3.0.tgz", + "integrity": "sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc=", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz", + "integrity": "sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz", + "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz", + "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.0.4.tgz", + "integrity": "sha1-P6+WbHy6D/Q3+zH2JQCC/PBEjPM=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz", + "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.2.0.tgz", + "integrity": "sha1-gzNlYLVKOONeOi33r9BFTWkUaLs=", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz", + "integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/is-docker/download/is-docker-2.1.1.tgz", + "integrity": "sha1-QSWojkTkUNOE4JBH7eca3C0UQVY=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-2.0.0.tgz", + "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz", + "integrity": "sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha1-v+Lcomxp85cmWkAJljYCk1oFOss=", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz", + "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.1.1.tgz?cache=0&sync_timestamp=1596555640141&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-regex%2Fdownload%2Fis-regex-1.1.1.tgz", + "integrity": "sha1-xvmKrMVG9s7FRooHt7FTq1ZKV7k=", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz", + "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz", + "integrity": "sha1-kyHb0pwhLlypnE+peUxxS8r6L3U=", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "javascript-stringify": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-2.0.1.tgz", + "integrity": "sha1-bvNYA1MQ411mfGde1j0+t8GqGeU=", + "dev": true + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.5.0.tgz?cache=0&sync_timestamp=1597059193924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-worker%2Fdownload%2Fjest-worker-25.5.0.tgz", + "integrity": "sha1-JhHQcbec6g9D7lej0RhZOsFUfbE=", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1577797756584&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1598611771865&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-message": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.5.tgz", + "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "dev": true + }, + "js-queue": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.0.tgz", + "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "dev": true, + "requires": { + "easy-stack": "^1.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.14.0.tgz", + "integrity": "sha1-p6NBcPJqIbsWJCTYray0ETpp5II=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz", + "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npm.taobao.org/json-parse-even-better-errors/download/json-parse-even-better-errors-2.3.1.tgz?cache=0&sync_timestamp=1599064822543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-parse-even-better-errors%2Fdownload%2Fjson-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz", + "integrity": "sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E=", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.1.3.tgz", + "integrity": "sha1-ybD3+pIzv+WAf+ZvzzpWF+1ZfUM=", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz", + "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz", + "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=", + "dev": true + }, + "klona": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/klona/download/klona-2.0.3.tgz?cache=0&sync_timestamp=1597808961622&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fklona%2Fdownload%2Fklona-2.0.3.tgz", + "integrity": "sha1-mCdFUsUTWDrXoBRWp4mioLSipTg=" + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz", + "integrity": "sha1-hxtaPuOdZoD8wm03kwtu7aidsMo=", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc=", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "less": { + "version": "3.12.2", + "resolved": "https://registry.npm.taobao.org/less/download/less-3.12.2.tgz?cache=0&sync_timestamp=1594913917424&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless%2Fdownload%2Fless-3.12.2.tgz", + "integrity": "sha1-FX5t0ypohp34hZMUrTjnAhGvOrQ=", + "requires": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "native-request": "^1.0.5", + "source-map": "~0.6.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz", + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=", + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "optional": true + } + } + }, + "less-loader": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/less-loader/download/less-loader-7.0.1.tgz?cache=0&sync_timestamp=1599142187836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless-loader%2Fdownload%2Fless-loader-7.0.1.tgz", + "integrity": "sha1-EV7zsoF/b54UrebeNQm4eMG8DBM=", + "requires": { + "klona": "^2.0.3", + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.1" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz", + "integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz", + "integrity": "sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I=", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/levenary/download/levenary-1.1.1.tgz", + "integrity": "sha1-hCqe6Y0gdap/ru2+MmeekgX0b3c=", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.3.tgz", + "integrity": "sha1-8IZXZG1gcHi+LwoDL4vWndbyd9k=", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz?cache=0&sync_timestamp=1593786187106&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-runner%2Fdownload%2Floader-runner-2.4.0.tgz", + "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.4.0.tgz", + "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz", + "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.20.tgz?cache=0&sync_timestamp=1597336053864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.20.tgz", + "integrity": "sha1-tEqbYpe8tpjxxRo1RaKzs2jVnFI=", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.7.0.tgz?cache=0&sync_timestamp=1598447629552&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floglevel%2Fdownload%2Floglevel-1.7.0.tgz", + "integrity": "sha1-coFmhVp0DVnTjbAc9G8ELKoEG7A=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz?cache=0&sync_timestamp=1594427573763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-5.1.1.tgz", + "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz", + "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz", + "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.4.tgz", + "integrity": "sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz", + "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz", + "integrity": "sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.4.1.tgz", + "integrity": "sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } + } + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.4.6.tgz", + "integrity": "sha1-5bQHyQ20QvK+tbFiNz0Htpr/pNE=", + "dev": true + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.44.0.tgz", + "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.27.tgz", + "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz?cache=0&sync_timestamp=1596095644798&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-1.2.0.tgz", + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha1-R/LPB6oWWrNXM7H8l9TEbAVkM54=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz", + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz", + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-3.1.3.tgz", + "integrity": "sha1-fUL/HzljVILhX5zbUxhN7r1YFf0=", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz", + "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=", + "dev": true + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/minipass-collect/download/minipass-collect-1.0.2.tgz", + "integrity": "sha1-IrgTv3Rdxu26JXa5QAIq1u3Ixhc=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/minipass-flush/download/minipass-flush-1.0.5.tgz", + "integrity": "sha1-gucTXX6JpQ/+ZGEKeHlTxMTLs3M=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/minipass-pipeline/download/minipass-pipeline-1.2.4.tgz?cache=0&sync_timestamp=1595998531778&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminipass-pipeline%2Fdownload%2Fminipass-pipeline-1.2.4.tgz", + "integrity": "sha1-aEcveXEcCEZXwGfFxq2Tzd6oIUw=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz", + "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz", + "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz", + "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz", + "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz", + "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz", + "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.1.tgz", + "integrity": "sha1-174036MQW5FJTDFHCJMV7/iHSwE=", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "native-request": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/native-request/download/native-request-1.0.7.tgz?cache=0&sync_timestamp=1594998140876&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnative-request%2Fdownload%2Fnative-request-1.0.7.tgz", + "integrity": "sha1-/3QtxVW0yPLxwUtUhjm6F05XOFY=", + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", + "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.2.tgz?cache=0&sync_timestamp=1594317361810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fneo-async%2Fdownload%2Fneo-async-2.6.2.tgz", + "integrity": "sha1-tKr7k+OustgXTKU88WOrfXMIMF8=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz", + "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz", + "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.9.0.tgz?cache=0&sync_timestamp=1599010706324&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.9.0.tgz", + "integrity": "sha1-1iQFDtu0SHStyhK7mlLsY8t4JXk=", + "dev": true + }, + "node-ipc": { + "version": "9.1.1", + "resolved": "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.1.tgz", + "integrity": "sha1-TiRe1pOOZRAOWV68XcNLFujdXWk=", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.5", + "js-queue": "2.0.0" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz", + "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.60", + "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.60.tgz?cache=0&sync_timestamp=1595485372345&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.60.tgz", + "integrity": "sha1-aUi9/OgobwtdDlqI6DhOlU3+cIQ=", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz", + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz", + "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=", + "dev": true + }, + "normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz", + "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz", + "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/object-hash/download/object-hash-1.3.1.tgz", + "integrity": "sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8=", + "dev": true + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.8.0.tgz?cache=0&sync_timestamp=1592545089271&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-inspect%2Fdownload%2Fobject-inspect-1.8.0.tgz", + "integrity": "sha1-34B+Xs9TpgnMa/6T6sPMe+WzqdA=", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.2.tgz", + "integrity": "sha1-xdLof/nhGfeLegiEQVGeLuwVc7Y=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha1-Npvx+VktiridcS3O1cuBx8U1Jkk=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/object.values/download/object.values-1.1.1.tgz", + "integrity": "sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz", + "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz", + "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz?cache=0&sync_timestamp=1597003951681&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fonetime%2Fdownload%2Fonetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npm.taobao.org/open/download/open-6.4.0.tgz?cache=0&sync_timestamp=1598611776334&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopen%2Fdownload%2Fopen-6.4.0.tgz", + "integrity": "sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk=", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/opener/download/opener-1.5.2.tgz?cache=0&sync_timestamp=1598732988075&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopener%2Fdownload%2Fopener-1.5.2.tgz", + "integrity": "sha1-XTfh81B3udysQwE3InGv3rKhNZg=", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz", + "integrity": "sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w=", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz", + "integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/ora/download/ora-3.4.0.tgz?cache=0&sync_timestamp=1596812525427&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fora%2Fdownload%2Fora-3.4.0.tgz", + "integrity": "sha1-vwdSSRBZo+8+1MhQl1Md6f280xg=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz", + "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1594559711554&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-3.0.0.tgz", + "integrity": "sha1-1wTZr4orpoTiYA2aIVmD1BQal50=", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz", + "integrity": "sha1-MWtMiJPiyNwc+okfQGxLQivr8yg=", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz", + "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.2.0.tgz", + "integrity": "sha1-kEnKN9bLIYLDsdLHIL6U0UpYFPw=", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz", + "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz", + "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.6.tgz?cache=0&sync_timestamp=1597167309380&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-asn1%2Fdownload%2Fparse-asn1-5.1.6.tgz", + "integrity": "sha1-OFCAo+wTy2KmLTlAnLPoiETNrtQ=", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.1.0.tgz?cache=0&sync_timestamp=1598129230057&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-5.1.0.tgz", + "integrity": "sha1-+WCIzfJKj6qa6poAny2dlCyZlkY=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-5.1.1.tgz?cache=0&sync_timestamp=1595849246963&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-5.1.1.tgz", + "integrity": "sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/parse5-htmlparser2-tree-adapter/download/parse5-htmlparser2-tree-adapter-5.1.1.tgz?cache=0&sync_timestamp=1596089876753&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5-htmlparser2-tree-adapter%2Fdownload%2Fparse5-htmlparser2-tree-adapter-5.1.1.tgz", + "integrity": "sha1-6MdD1OkhlNUpPs3isIvjHmdGHLw=", + "dev": true, + "requires": { + "parse5": "^5.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", + "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz", + "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.1.1.tgz", + "integrity": "sha1-y4cksPramEWWhW0abrr9NYRlS5Q=", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.2.tgz", + "integrity": "sha1-IfMz6ba46v8CRo9RRupAbTRfTa0=", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha1-yXEaxNxIpoXauvyG+Lbdn434QUk=", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.28.tgz", + "integrity": "sha1-Z8RiKFK9U3TdHdkA93n1NGL6x3g=", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.32.tgz", + "integrity": "sha1-QxDW7jRwU9o0M9sr5JKIPWLOxZ0=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1598611771865&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.4", + "resolved": "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.4.tgz?cache=0&sync_timestamp=1598957836882&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-calc%2Fdownload%2Fpostcss-calc-7.0.4.tgz", + "integrity": "sha1-Xhd920FzQebUoZPF2f2K2nkJT4s=", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz?cache=0&sync_timestamp=1599151750812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-colormin%2Fdownload%2Fpostcss-colormin-4.0.3.tgz", + "integrity": "sha1-rgYLzpPteUrHEmTwgTLVUJVr04E=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz?cache=0&sync_timestamp=1599151750957&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-convert-values%2Fdownload%2Fpostcss-convert-values-4.0.1.tgz", + "integrity": "sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz?cache=0&sync_timestamp=1599151751085&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-comments%2Fdownload%2Fpostcss-discard-comments-4.0.2.tgz", + "integrity": "sha1-H7q9LCRr/2qq15l7KwkY9NevQDM=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz?cache=0&sync_timestamp=1599151751193&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-duplicates%2Fdownload%2Fpostcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha1-P+EzzTyCKC5VD8myORdqkge3hOs=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz?cache=0&sync_timestamp=1599151751291&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-empty%2Fdownload%2Fpostcss-discard-empty-4.0.1.tgz", + "integrity": "sha1-yMlR6fc+2UKAGUWERKAq2Qu592U=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz?cache=0&sync_timestamp=1599151751377&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-overridden%2Fdownload%2Fpostcss-discard-overridden-4.0.1.tgz", + "integrity": "sha1-ZSrvipZybwKfXj4AFG7npOdV/1c=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.0.tgz", + "integrity": "sha1-yE1pK3u3tB3c7ZTuYuirMbQXsAM=", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz", + "integrity": "sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz?cache=0&sync_timestamp=1599151751689&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-merge-longhand%2Fdownload%2Fpostcss-merge-longhand-4.0.11.tgz", + "integrity": "sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ=", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz?cache=0&sync_timestamp=1599151751801&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-merge-rules%2Fdownload%2Fpostcss-merge-rules-4.0.3.tgz", + "integrity": "sha1-NivqT/Wh+Y5AdacTxsslrv75plA=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz?cache=0&sync_timestamp=1599151751917&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-minify-font-values%2Fdownload%2Fpostcss-minify-font-values-4.0.2.tgz", + "integrity": "sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz?cache=0&sync_timestamp=1599151964161&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-minify-params%2Fdownload%2Fpostcss-minify-params-4.0.2.tgz", + "integrity": "sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz?cache=0&sync_timestamp=1599151964278&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-minify-selectors%2Fdownload%2Fpostcss-minify-selectors-4.0.2.tgz", + "integrity": "sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha1-gYcZoa4doyX5gyRGsBE27rSTzX4=", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-3.0.3.tgz?cache=0&sync_timestamp=1595733657141&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-local-by-default%2Fdownload%2Fpostcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha1-uxTgzHgnnVBNvcv9fgyiiZP/u7A=", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha1-OFyuATzHdD9afXYC0Qc6iequYu4=", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-3.0.0.tgz", + "integrity": "sha1-W1AA1uuuKbQlUwG0o6VFdEI+fxA=", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz?cache=0&sync_timestamp=1599151964377&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-charset%2Fdownload%2Fpostcss-normalize-charset-4.0.1.tgz", + "integrity": "sha1-izWt067oOhNrBHHg1ZvlilAoXdQ=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz?cache=0&sync_timestamp=1599151964578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-display-values%2Fdownload%2Fpostcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha1-Db4EpM6QY9RmftK+R2u4MMglk1o=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz?cache=0&sync_timestamp=1599151964657&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-positions%2Fdownload%2Fpostcss-normalize-positions-4.0.2.tgz", + "integrity": "sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz?cache=0&sync_timestamp=1599151965009&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-repeat-style%2Fdownload%2Fpostcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz?cache=0&sync_timestamp=1599151965112&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-string%2Fdownload%2Fpostcss-normalize-string-4.0.2.tgz", + "integrity": "sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw=", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz?cache=0&sync_timestamp=1599151965213&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-timing-functions%2Fdownload%2Fpostcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha1-jgCcoqOUnNr4rSPmtquZy159KNk=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz?cache=0&sync_timestamp=1599151965301&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-unicode%2Fdownload%2Fpostcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz?cache=0&sync_timestamp=1599151965409&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-url%2Fdownload%2Fpostcss-normalize-url-4.0.1.tgz", + "integrity": "sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE=", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz?cache=0&sync_timestamp=1599151965500&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-whitespace%2Fdownload%2Fpostcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz?cache=0&sync_timestamp=1599151965616&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-ordered-values%2Fdownload%2Fpostcss-ordered-values-4.1.2.tgz", + "integrity": "sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz?cache=0&sync_timestamp=1599151965700&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-reduce-initial%2Fdownload%2Fpostcss-reduce-initial-4.0.3.tgz", + "integrity": "sha1-f9QuvqXpyBRgljniwuhK4nC6SN8=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz?cache=0&sync_timestamp=1599151965885&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-reduce-transforms%2Fdownload%2Fpostcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha1-F++kBerMbge+NBSlyi0QdGgdTik=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw=", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.2.tgz?cache=0&sync_timestamp=1599151966007&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-svgo%2Fdownload%2Fpostcss-svgo-4.0.2.tgz", + "integrity": "sha1-F7mXvHEbMzurFDqu07jT1uPTglg=", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz?cache=0&sync_timestamp=1599151966143&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-unique-selectors%2Fdownload%2Fpostcss-unique-selectors-4.0.1.tgz", + "integrity": "sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.1.0.tgz", + "integrity": "sha1-RD9qIM7WSBor2k+oUypuVdeJoss=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npm.taobao.org/prettier/download/prettier-1.19.1.tgz?cache=0&sync_timestamp=1598414052614&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprettier%2Fdownload%2Fprettier-1.19.1.tgz", + "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=", + "dev": true, + "optional": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/private/download/private-0.1.8.tgz", + "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz", + "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz", + "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz", + "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz", + "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz", + "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz", + "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz", + "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz", + "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz", + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz?cache=0&sync_timestamp=1591853319485&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquery-string%2Fdownload%2Fquery-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.2.0.tgz?cache=0&sync_timestamp=1597686657045&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquerystringify%2Fdownload%2Fquerystringify-2.2.0.tgz", + "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz", + "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz", + "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz", + "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-5.2.0.tgz", + "integrity": "sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz", + "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-3.4.0.tgz", + "integrity": "sha1-n9zN+ekVWAVEkiGsZF6DA6tbmto=", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerate": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.1.tgz", + "integrity": "sha1-ytkq2Oa1kXc0hfvgWkhcr09Ffm8=", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha1-5d5xEdZV57pgwFfb6f83yH5lzew=", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz?cache=0&sync_timestamp=1595456105304&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.7.tgz", + "integrity": "sha1-ysLazIoepnX+qrrriugziYrkb1U=", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.5.tgz?cache=0&sync_timestamp=1593557394730&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-transform%2Fdownload%2Fregenerator-transform-0.14.5.tgz", + "integrity": "sha1-yY2hVGg2ccnE3LFuznNlF+G3/rQ=", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=", + "dev": true + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.7.0.tgz", + "integrity": "sha1-/L9FjFBDGwu3tF1pZ7gZLZHz2Tg=", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.2.tgz", + "integrity": "sha1-kv8pX7He7L9uzaslQ9IH6RqjNzM=", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.4.tgz", + "integrity": "sha1-p2n4aEMIQBpm6bUp0kNv9NBmYnI=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.3.tgz", + "integrity": "sha1-OAF5wv9a4TZcUivy/Pz/AcW3QUk=", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz", + "integrity": "sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI=", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz?cache=0&sync_timestamp=1597680507221&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz", + "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npm.taobao.org/request/download/request-2.88.2.tgz?cache=0&sync_timestamp=1592843183066&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frequest%2Fdownload%2Frequest-2.88.2.tgz", + "integrity": "sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM=", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz", + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.17.0.tgz", + "integrity": "sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz", + "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz", + "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.4.1.tgz", + "integrity": "sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU=", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.6.2", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.6.2.tgz?cache=0&sync_timestamp=1599146160503&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frxjs%2Fdownload%2Frxjs-6.6.2.tgz", + "integrity": "sha1-gJanrAPyzE/lhg725XKBDZ4BwNI=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", + "dev": true + }, + "sass": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.0.tgz", + "integrity": "sha512-fhyqEbMIycQA4blrz/C0pYhv2o4x2y6FYYAH0CshBw3DXh5D5wyERgxw0ptdau1orc/GhNrhF7DFN2etyOCEng==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.0.tgz", + "integrity": "sha512-ZCKAlczLBbFd3aGAhowpYEy69Te3Z68cg8bnHHl6WnSCvnKpbM6pQrz957HWMa8LKVuhnD9uMplmMAHwGQtHeg==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "dependencies": { + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "dev": true + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.7.1.tgz", + "integrity": "sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.7.tgz", + "integrity": "sha1-2lgZ/QSdVXTyjoipvMbbxubzkGs=", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz", + "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz", + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-4.0.0.tgz?cache=0&sync_timestamp=1591623621018&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-4.0.0.tgz", + "integrity": "sha1-tSXhI4SJpez8Qq+sw/6Z5mb0sao=", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz?cache=0&sync_timestamp=1593407676273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz", + "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz", + "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz", + "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz", + "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz", + "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npm.taobao.org/shell-quote/download/shell-quote-1.7.2.tgz", + "integrity": "sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz?cache=0&sync_timestamp=1592843131591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.3.tgz", + "integrity": "sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=", + "dev": true + }, + "signature_pad": { + "version": "3.0.0-beta.4", + "resolved": "https://registry.npm.taobao.org/signature_pad/download/signature_pad-3.0.0-beta.4.tgz", + "integrity": "sha1-KoRBVZ6fQ55/L1Jdo+5jDvlz7PY=" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz", + "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM=", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz", + "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.20.tgz?cache=0&sync_timestamp=1596167301825&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs%2Fdownload%2Fsockjs-0.3.20.tgz", + "integrity": "sha1-smooPsVi74smh7RAM6Tuzqx12FU=", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.4.0.tgz?cache=0&sync_timestamp=1596409931002&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs-client%2Fdownload%2Fsockjs-client-1.4.0.tgz", + "integrity": "sha1-yfJWjhnI/YFztJl+o0IOC7MGx9U=", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&sync_timestamp=1592843160836&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz", + "integrity": "sha1-XA6aiWjokSwoZjn96XeosgnyUI4=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sortablejs": { + "version": "1.10.2", + "resolved": "https://registry.npm.taobao.org/sortablejs/download/sortablejs-1.10.2.tgz", + "integrity": "sha1-bkA2TZE/mLhaFPZnj5K1wSIfUpA=" + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz", + "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.3.tgz", + "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.19.tgz", + "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.1.tgz", + "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.3.0.tgz", + "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/spdy/download/spdy-4.0.2.tgz", + "integrity": "sha1-t09GYgOj7aRSwCSSuR+56EonZ3s=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz", + "integrity": "sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz", + "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz", + "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=", + "dev": true + }, + "stackframe": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/stackframe/download/stackframe-1.2.0.tgz", + "integrity": "sha1-UkKUktY8YuuYmATBFVLj0i53kwM=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz", + "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz", + "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz", + "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.1.tgz", + "integrity": "sha1-1wiCgVWasneEJCebCHfaPDktWj0=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz", + "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz", + "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz", + "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/strip-final-newline/download/strip-final-newline-2.0.0.tgz", + "integrity": "sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.1.tgz?cache=0&sync_timestamp=1594571796132&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.1.tgz", + "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=", + "dev": true + }, + "style-mod": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/style-mod/-/style-mod-4.0.0.tgz", + "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==" + }, + "style-resources-loader": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/style-resources-loader/-/style-resources-loader-1.5.0.tgz", + "integrity": "sha512-fIfyvQ+uvXaCBGGAgfh+9v46ARQB1AWdaop2RpQw0PBVuROsTBqGvx8dj0kxwjGOAyq3vepe4AOK3M6+Q/q2jw==", + "dev": true, + "requires": { + "glob": "^7.2.0", + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/stylehacks/download/stylehacks-4.0.3.tgz?cache=0&sync_timestamp=1599151970572&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstylehacks%2Fdownload%2Fstylehacks-4.0.3.tgz", + "integrity": "sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&sync_timestamp=1598611771865&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/svgo/download/svgo-1.3.2.tgz", + "integrity": "sha1-ttxRHAYzRsnkFbgeQ0ARRbltQWc=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz?cache=0&sync_timestamp=1599159016925&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftable%2Fdownload%2Ftable-5.4.6.tgz", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz", + "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=", + "dev": true + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npm.taobao.org/terser/download/terser-4.8.0.tgz?cache=0&sync_timestamp=1599141189151&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser%2Fdownload%2Fterser-4.8.0.tgz", + "integrity": "sha1-YwVjQ9fHC7KfOvZlhlpG/gOg3xc=", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.5.tgz?cache=0&sync_timestamp=1597229595508&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-1.4.5.tgz", + "integrity": "sha1-oheu+uozDnNP+sthIOwfoxLWBAs=", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.1.tgz?cache=0&sync_timestamp=1592413466879&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthenify%2Fdownload%2Fthenify-3.3.1.tgz", + "integrity": "sha1-iTLmhqQGYDigFt2eLKRq3Zg4qV8=", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/thread-loader/download/thread-loader-2.1.3.tgz", + "integrity": "sha1-y9LBOfwrLebp0o9iKGq3cMGsvdo=", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "throttle-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz", + "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz?cache=0&sync_timestamp=1593478643560&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthrough2%2Fdownload%2Fthrough2-2.0.5.tgz", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/thunky/download/thunky-1.1.0.tgz", + "integrity": "sha1-Wrr3FKlAXbBQRzK7zNLO3Z75U30=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.11.tgz", + "integrity": "sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8=", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz", + "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz", + "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz", + "integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "trim-canvas": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/trim-canvas/download/trim-canvas-0.1.2.tgz", + "integrity": "sha1-YgRX9f7PVktSHTXF/NTaWDBNbkU=" + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/tryer/download/tryer-1.0.1.tgz", + "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=", + "dev": true + }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/ts-pnp/download/ts-pnp-1.2.0.tgz", + "integrity": "sha1-pQCtCEsHmPHDBxrzkeZZEshrypI=", + "dev": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.13.0.tgz?cache=0&sync_timestamp=1596752024863&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-1.13.0.tgz", + "integrity": "sha1-yIHhPMcBWJTtkUhi0nZDb6mkcEM=" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.6.0.tgz", + "integrity": "sha1-jSojcNPfiG61yQraHFv2GIrPg4s=", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz", + "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&sync_timestamp=1598806851178&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz", + "integrity": "sha1-mtlWPY6zrN+404WX0q8dgV9qdV8=", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz?cache=0&sync_timestamp=1598576076977&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.19.0.tgz", + "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha1-JhmADEyCWADv3YNDr33Zkzy+KBg=", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw=", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha1-DZH2AO7rMJaqlisdb8iIduZOpTE=", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha1-3Vepn2IHvt/0Yoq++5TFDblByPQ=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz", + "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz", + "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz", + "integrity": "sha1-uqvOkQg/xk6UWw861hPiZPfNTmw=", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz", + "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz", + "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.4.0.tgz?cache=0&sync_timestamp=1598814377097&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furi-js%2Fdownload%2Furi-js-4.4.0.tgz", + "integrity": "sha1-qnFCYd55PoqCNHp7zJznTobyhgI=", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/url-loader/download/url-loader-2.3.0.tgz", + "integrity": "sha1-4OLvZY8APvuMpBsPP/v3a6uIZYs=", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.4.7.tgz", + "integrity": "sha1-qKg1NejACjFuQDpdtKwbm4U64ng=", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz", + "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz", + "integrity": "sha1-a693dLgO6w91INi4HQeYKlmruu4=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/utila/download/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz?cache=0&sync_timestamp=1595884856212&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.4.0.tgz", + "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.1.tgz", + "integrity": "sha1-VLw83UMxe8qR413K8wWxpyN950U=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/vendors/download/vendors-1.0.4.tgz", + "integrity": "sha1-4rgApT56Kbk1BsPPQRANFsTErY4=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz", + "integrity": "sha1-eGQcSIuObKkadfUR56OzKobl3aA=", + "dev": true + }, + "vue": { + "version": "2.6.12", + "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz", + "integrity": "sha1-9evU+mvShpQD4pqJau1JBEVskSM=" + }, + "vue-cli-plugin-style-resources-loader": { + "version": "0.1.5", + "resolved": "https://registry.npmmirror.com/vue-cli-plugin-style-resources-loader/-/vue-cli-plugin-style-resources-loader-0.1.5.tgz", + "integrity": "sha512-LluhjWTZmpGl3tiXg51EciF+T70IN/9t6UvfmgluJBqxbrb6OV9i7L5lTd+OKtcTeghDkhcBmYhtTxxU4w/8sQ==", + "dev": true + }, + "vue-codemirror": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/vue-codemirror/-/vue-codemirror-6.0.0.tgz", + "integrity": "sha512-1zYlS1l6Buxq0/PCw4gn2YQfWbINE0arEjtS/bZV1HcNMsgzotWbKmvRh9F+Ie0POX1F47gQricR731j4B/Ftw==", + "dev": true, + "requires": { + "@codemirror/commands": "6.x", + "@codemirror/language": "6.x", + "@codemirror/state": "6.x", + "@codemirror/view": "6.x", + "csstype": "^2.6.8" + } + }, + "vue-eslint-parser": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-7.1.0.tgz", + "integrity": "sha1-nNvMgj5lawh1B6GRFzK4Z6wQHoM=", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.0.1", + "lodash": "^4.17.15" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.0.tgz", + "integrity": "sha1-0Plx3+WcaeDK2mhLI9Sdv4JgDOU=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=", + "dev": true + }, + "vue-loader": { + "version": "15.9.3", + "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.9.3.tgz", + "integrity": "sha1-DeNdnlVdPtU5aVFsrFziVTEpndo=", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "vue-router": { + "version": "3.4.3", + "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.4.3.tgz?cache=0&sync_timestamp=1598983087864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.4.3.tgz", + "integrity": "sha1-+pN2hhbuM4qhdPFgrJZRZ/pXL/o=" + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.2.tgz", + "integrity": "sha1-3t80mAbyXOtOZPOtfApE+6c1/Pg=", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-template-compiler": { + "version": "2.6.12", + "resolved": "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.12.tgz?cache=0&sync_timestamp=1597927453960&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-template-compiler%2Fdownload%2Fvue-template-compiler-2.6.12.tgz", + "integrity": "sha1-lH7XGWdEyKUoXr4SM/6WBDf8xX4=", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", + "dev": true + }, + "vuedraggable": { + "version": "2.24.1", + "resolved": "https://registry.npm.taobao.org/vuedraggable/download/vuedraggable-2.24.1.tgz", + "integrity": "sha1-MEq9dkTd4FwfGZoie/npEH9WGXo=", + "requires": { + "sortablejs": "^1.10.1" + } + }, + "vuex": { + "version": "3.5.1", + "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.5.1.tgz", + "integrity": "sha1-8bjc6mSbwlJUz09DWAgdv12hiz0=" + }, + "w3c-keyname": { + "version": "2.2.4", + "resolved": "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.4.tgz", + "integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw==" + }, + "watchpack": { + "version": "1.7.4", + "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.4.tgz?cache=0&sync_timestamp=1598569254580&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.7.4.tgz", + "integrity": "sha1-bp2lOzyAuy1lCBiPWyAEEIZs0ws=", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/watchpack-chokidar2/download/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha1-mUihhmy71suCTeoTp+1pH2yN3/A=", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1596728921978&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz", + "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz", + "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz", + "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "4.44.1", + "resolved": "https://registry.npm.taobao.org/webpack/download/webpack-4.44.1.tgz", + "integrity": "sha1-F+af/58yG48RfR/acU7fwLk5zCE=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.8.0", + "resolved": "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.8.0.tgz", + "integrity": "sha1-zms/kI2vBp/R9yZvaSy7O97ZuhY=", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.4.0.tgz?cache=0&sync_timestamp=1597237468154&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.4.0.tgz", + "integrity": "sha1-4a1IbmxUUBY0xsOXxcEh2qODYHw=", + "dev": true + } + } + }, + "webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-6.5.1.tgz?cache=0&sync_timestamp=1595813222470&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-chain%2Fdownload%2Fwebpack-chain-6.5.1.tgz", + "integrity": "sha1-TycoTLu2N+PI+970Pu9YjU2GEgY=", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.2.tgz?cache=0&sync_timestamp=1594744507965&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-middleware%2Fdownload%2Fwebpack-dev-middleware-3.7.2.tgz", + "integrity": "sha1-ABnD23FuP6XOy/ZPKriKdLqzMfM=", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.11.0.tgz", + "integrity": "sha1-jxVKO84bz9HMYY705wMniFXn/4w=", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.20", + "sockjs-client": "1.4.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1596728921978&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz", + "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz", + "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz", + "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz", + "integrity": "sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1598611771865&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz", + "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-13.3.2.tgz?cache=0&sync_timestamp=1598505705729&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-13.3.2.tgz", + "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.2.tgz?cache=0&sync_timestamp=1598505090936&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.2.tgz", + "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz", + "integrity": "sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.2.tgz?cache=0&sync_timestamp=1598768710532&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-merge%2Fdownload%2Fwebpack-merge-4.2.2.tgz", + "integrity": "sha1-onxS6ng9E5iv0gh/VH17nS9DY00=", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.4.3.tgz", + "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true, + "requires": { + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.4.tgz", + "integrity": "sha1-f4RzvIOd/YdgituV1+sHUhFXikI=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz", + "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz", + "integrity": "sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz", + "integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz?cache=0&sync_timestamp=1593925518385&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-6.2.1.tgz", + "integrity": "sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz", + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz", + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz", + "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-15.4.1.tgz?cache=0&sync_timestamp=1598505705729&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-15.4.1.tgz", + "integrity": "sha1-DYehbeAa7p2L7Cv7909nhRcw9Pg=", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz?cache=0&sync_timestamp=1597169795121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-18.1.3.tgz?cache=0&sync_timestamp=1598505090936&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-18.1.3.tgz", + "integrity": "sha1-vmjEl1xrKr9GkjawyHA2L6sJp7A=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + } + } + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz", + "integrity": "sha1-kkEZEtQ1IU4SxRwq4Qk+VLa7g9k=", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz?cache=0&sync_timestamp=1594145159577&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz?cache=0&sync_timestamp=1597056455691&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz?cache=0&sync_timestamp=1594427573763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + } + } +} diff --git a/erupt-extra/erupt-flow/src/console/package.json b/erupt-extra/erupt-flow/src/console/package.json new file mode 100644 index 000000000..34c0b4dc2 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/package.json @@ -0,0 +1,63 @@ +{ + "name": "client", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "axios": "^0.20.0", + "clipboard": "^2.0.6", + "codemirror": "^6.0.0", + "core-js": "^3.6.5", + "element-ui": "^2.15.8", + "less": "^3.12.2", + "less-loader": "^7.0.1", + "moment": "^2.29.4", + "signature_pad": "^3.0.0-beta.4", + "trim-canvas": "^0.1.2", + "vue": "^2.6.11", + "vue-router": "^3.4.3", + "vuedraggable": "^2.24.1", + "vuex": "^3.5.1" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "~4.5.0", + "@vue/cli-plugin-eslint": "~4.5.0", + "@vue/cli-service": "~4.5.0", + "babel-eslint": "^10.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.3", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.7.0", + "babel-preset-env": "^1.7.0", + "eslint": "^6.7.2", + "eslint-plugin-vue": "^6.2.2", + "sass": "1.32.0", + "sass-loader": "10.1.0", + "style-resources-loader": "^1.3.2", + "vue-cli-plugin-style-resources-loader": "^0.1.4", + "vue-codemirror": "^6.0.0", + "vue-template-compiler": "^2.6.11" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "eslint:recommended" + ], + "parserOptions": { + "parser": "babel-eslint" + }, + "rules": {} + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ] +} diff --git a/erupt-extra/erupt-flow/src/console/public/favicon.ico b/erupt-extra/erupt-flow/src/console/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c0924798dc1c2dfd04ce34a77efc8168a0cd6ea2 GIT binary patch literal 4286 zcmeHJu};G<5IrWwGBF{wLJWLCS304_shIi!Ob8|ENAMX4Ayy=Y4vY-2b?ksTw^D^V z(vbmiymL^9(%86eK&Yy#S0!ir-rf1`9HK4!8V!gc1#;zDk)4RIiBxtX~ zU$(ajnM?eu;4$e~M}Cew3i)~k;M~Km$#;>v`p@U>26Ub2_0o@Qh}COWFOhn-ua%tD z^D`+hVrq*&^6W0lHQyS+{boBOJAYcgw*96#T^9~{1^=39Jp>t1K$G0iQ*uWdlD(0lSdCssqT%fw-mFUw!13*4*cAHHqMbi2sF-vP!F1207C znxm5g7p~2kzl#9p#+ + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
    + + + diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/bg.png b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..42c4a829f2d0b434878bc20c9b4d062258b83c7c GIT binary patch literal 3383 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 N002ovPDHLkV1kqr$Rz*( literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/breadcrumbs.png b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/breadcrumbs.png new file mode 100644 index 0000000000000000000000000000000000000000..f70c2d43ab33329ce02bb8445572b5ea2f488818 GIT binary patch literal 580 zcmeAS@N?(olHy`uVBq!ia0vp^f!3-qDq?+7-lw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6JlqKyGQA+G=a{rmCr=jSh94jw-C`}gl7$4-9u`0>=4^XD&I z{`2S0;iD(6-MD%A%C$3RFT8pC?%DGf-@bi+_~^;K`wyNzdw%lt*;}{o9zS{J`HPn) zPMtk)=;-S=Z*ShZ^YZ2E<0npExOn-=lV^{gJiU7T=Gk)>-@bc)|G}d>ckdrLcH-QH zOOGBudGPSj&!4~EzyEOT#HqXY9^ANj`^S$Tr%s>y`t94RSFbN$y?*-a`S0JqfBO9S z;iJcY|Ngyt?Z*HA{}rb3pZ@Fh)5yqO;gh;x9(NtS z6wh=nDRcbzSz^)cD1}}2OG_SdE^>DLId7Xl?mJtTdb24jJQS+_>IkgNSD3YfZ_(_Y zN6y?AU3a9`MS6DLwcputB9vcJed8zdSyQ(Q*~hTwtKRROQ8F!2y0iQ3u_u2Squ-YA zoO*8U#B=jF^}6`A?Y?9<&0M709-1UQ)xSUEuE3tDH@0ruTQqOsLv_7vLZZxiOJ_X~ miwoyv^3sk=m2#|Om0(Cy*>QBGt`j@Zw+x=HelF{r5}E*P$z3`C literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/checker-bg.png b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/checker-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..a23232d93846c619b78a6775804f303f304e26ec GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;7>k44ofy`glX(f`um$*pxPJfs z{r~^}KCeaefg&QFE{-7_*OL(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-JV``BRCwC#*})BiFbn`dI|?K4;>#Z0fKfUOqp$&c@a4q_Af=yzqDlcf2_dQM zS0!q3N*xDWG{!)Qp`g$ZxWEOTY3Tg}4ofk8(R4MIzv4&ClYyq)vXjn}hNeX~ylFSn z)m3h89AE{2>VLZm_9I|FKD){%1}EISUq|v&XxqW+<4@tQ(4-nqji;c=n==)jie`0{ zyYU<}yB*$z=c2v(cx=26+WP>Ch4)1Vot&Zg5OlO7pNo%CW-8XtOvU)-MS=g`oQm+x zivoAm<`u#>&*|7FS=OuD>UtihY^XB;CC~L89G2sGob~EP?Exxl| z>=jRm=B&KR3C+Q)+|X3K_UQnr@wXlMxeSE#cZQMUKnTtTLTC?OvIz@abg7{Hc_nax g3tZp=e2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4wVBWazv-`QBQm>I{VmwmKKjdu literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/error_catch.png b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/error_catch.png new file mode 100644 index 0000000000000000000000000000000000000000..0a33f08c8080056813b48166843708f20de3e558 GIT binary patch literal 1307 zcmV+$1?2jPP)W(qu^|iwRq&W}TV* z_Aqm1k9Y3;Ke;UJ4-U+nd(P*4=FYk2{O-LPNj!}4*n<|xHy(+fcRUh5?@%JHX_`&b zw6`@)dtKAC^EnwL3oZa|0ARd~s$ga+TA}N>rfC-d_yJhsReu4fCwZqJaE4IvxAx$^ zGyq%xFsp!@J`_xouW^5x$mK;v)3D62zCfr$h!z(Yv%9-n7T*J4DS%x9;4=Ub0M}HD zPYThlt}X@w0orUfS^k{@*dI%r4Q1j0OaKl9e0h19B!0L!s&F%gRbVtec9l8X;dk`D8OT5W0YfSYl}riMe@M?Su&poa8D=wyCdf+}z~x z@o|!PI2>kueZ4Go3qVkOZ*Fd;-|uHhNr~L1UZwag0iK$gN{EF*A-1%%5CH9VI}Z*H zlH|Q!ui-qdt*vDs5a8_WtX#jD(Ip4zS^+kj&Gh^IB*|zr%8rhXGcui>orY7Ux3~99 zyNZg6#2(Pl&>$asO{I7up>nxg37LU`0mC!7u&|IMet3Au^73*5v21d6b(JLP^ZDey ze*?IvL>#(=YH@LqBsnrNq8Hv3pR22@d31D?B)_w>!}0NPZftBM>V}4fWX4BXIb|uH zNT{l+su+nxI6XbBm;Mm39q<=XH#j(GIA!EGIXPivWu?ryqEdW8fQN^NIX5?_mtI1A zV*$`1>NQQH*XvCyK0iM%bAAS5_rV2=LzhrZOia*ZGRcE|1)x;d=M!<<;cze%3Z)cp zZ*P}bZ)GE$t@yA2mz9;Vw6s(n=vx3*gFcr4{2|)u(_Rt#`}^`qI0f*8N^zsCjR1Z` zip(wE?^SvE^!a>A;<_DmC0pr?;*b(5UAY6mp2d$|5q%mP8_(P&k)*@nkeRQj6u)U8 z{X2lVtl+>?@pYL1I5RVokX~C`lbL@a#bbz^#i2{6;^i(3?*B5#kBa^li-o(pyCg}s z+bwgi=fcb+-mjCsm+cy>%!P zYm=pK=fzAj*f$bP)K~!jg?U_wT6;Tv`znc%rOoG4=f+(U8+eOe1v~it9M2n!s zLuj8RZfjLRv}qA(fh`iEMK5YqV393q5fVhwA}XXZ3WDrUvOF!`JRFCa`_G8vfdh|u z=YI3O`|iw~nNcFbVvJ=AE#MnV;$_E@c-av}Tq)J2lsc`HI;NB=XEH=2IDtVxlI)Mc zG^GkXk1M5GfJvY=+4KYG6p@J_upwgnt%sPC2512;MBwTp!ZLZp+%ie$zDUckId^*? zbW4G>0B?bn0qo_#9bg9Ni!FXeBQC(%0QPW-^EjF~&;)!ii2nw*dazGsI2U7z?=?s_ z@}VR5a1LX8O!1nfxByj4=5Am*Gxm9It*7+bWEt3se*)GRm>ZM2?AYTm#rqtj8#$=q ztp;8c93yQp#m7CwXMtTgtO{_iU`(yh!9#kdhjb&K0Zkd+B~5*IO!3PB;sW%hSiPFM zk3c1gIQ2ecDp33zuny=3{%Y#ZXi5CH;+Pw%2f&KVm>Ztrr>xI#7UCx~J9-MV=8S0vzBo$H0vlqA=XGrY zyriIWOUCs$ijUYz8^tMZs3w5*7C(B#LHtNe@w|rWGtgmqP;UZ$T1bDT;4y@=IQb3L z6gl^Q2Kjyq@c|d6NxYhYPh)wG&2TEfm_d9;O!4&k`~w_tg{N5C5=Nf%xDQj;tE@_W zJ}M$LO|3RWWDGc8@b!={R5we*z(L=c&hVOnSInR78KB*Z7emTHzAGbs+m}`9s}vEr z4_rxY8t`QWKiGHPVf|H06?iWqcfC1fi^q!p`>oqT#G)1d2V(uTusIOVa{vGU07*qo IM6N<$f-YxoF8}}l literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/manual.png b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/manual.png new file mode 100644 index 0000000000000000000000000000000000000000..7aa3b85300b3bdca540a4b5a5af42f7e42ec9583 GIT binary patch literal 3319 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 BI)MNH literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/message_catch.png b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/message_catch.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac06bb1135f5fcce17c6cc25baed2f050732e61 GIT binary patch literal 410 zcmV;L0cHM)P)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-AW1|)RCwC#*})FOAP4|ZG4?Y!`Tw8f$ z$M9~`Fu1`Dt~A1R5o6q@E~b=V{~f;~=Ufo+)CSEt2SkJ_91+iy(xD9=V|+R1j{mJH z0N?;%DXwLx!mq>ED*Scd+99x+Dy#5MXi|><8c#u!U(R3Qspzh%G8^B6?kAe#yX4YQVtoDuIE)Y6b&?c>bjLqi#U8Up-wMLn>~)xf#gU zY{0>mkWn?^?Z5V0d57Yrr5a|ldg<<(?=Jjky4OOjZjQNzTysqr*kuY1Fsdsp+O_w< znf^5qf;-J0zTcr*V!uB2v69p3^M$wnpnDjRDQ8xV*XM0DUqF3XQFz{^;!1q z-6{6)EO+DftYZF$XM^{9^yFxyy_@&Kr1BxN$8FZC9Vhfc)3@m5cW+)()9KdVR`%3e zZ3}DsriEL7NX0HU{&4-D!k5?5ZpRY-crk*U%`WqyzF|KbgND`$3q^)jU;r^Nc)I$z JtaD0e0syk7j{E=s literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/receive.png b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/receive.png new file mode 100644 index 0000000000000000000000000000000000000000..dd2d1c12074ca922620223b8344e70ae5b9bb543 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4@SQ(o;!k(e4h3Mb|s-CB!YcxNmmtwkJ8u4@J>8XAyW-_*0VBPiwc>#?sZMB1Y3w` z_FKa9!1r9{n8YWW|1TuB=PG*&xja$* jkt=`a-H`|P>mLjADz05FlbmJ%^dN($tDnm{r-UW|c7le) literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/script.png b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/script.png new file mode 100644 index 0000000000000000000000000000000000000000..febac1d5be2e28efda105e433870d9e6c2449154 GIT binary patch literal 601 zcmV-f0;c_mP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ign| z4>S(7Eb(&y00G%aL_t(I%bk-ys~SNR#ecfHs0*uNm%>V$6e&cDd;wFWPGgbcRS!}m zUA{o9EmDOPX@#VCAbB4kAecf6!BVgg@gMjH+1+u~y(x4S3FPG^2ZrG?bIv_?=3Y3% z1ik_Cugkm$d;ng}W-~0y0w5NP@jDKO17R347!0UZs{k(mo&&PkY~(ReO6lzHwXigs zO_@w4f3-Ut4yD)Y>DU5@0WuzsNvG4SRx2JtCX*qT%K>}@-bD`X?(XEVxMcr+E&Lh~ z5s`ks|6mEz=~PCek&d6~64Jo7+wD>)6mVVlY)gc5!t;-a2$p4$NF-=98r19c^U=k{ zE$~SbPNx&cGS6pKZG+v{%mQZAQo+U+(0-lVHmPlEEo(1)M_=%t2?7! zuSYx{$M^k+pvgfHpp-%>g<%+Ev)O0{05A;WO{G#{u~?AL=l|FXolb}2@yKK{!8FaC zF5x9`@47CwZR7iX^b`6~gCJnP-=maby2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4E8|gZoC-Yqq|(_J8(v;%|Khu@4%DtsQ19Tk|?=+O=N=`z~$I{oVE8_rJH%yVn_4 zGr#yfPl2P(bbGG1L|ZyTLx+It#ictlrCgpYkY(t5te~XgS!8s*w70{+_p&L&fzLKB zEjH(S!$L)snx0pxZ(w~hUw6m4(*`^lYd7Z3w&?TSk{Wp-Dp-WoOY?FQ-+s5j0Tz0>%9U$c>;aR;OXk;vd$@?2>?^1 Bkg)&& literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/service.png b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/service.png new file mode 100644 index 0000000000000000000000000000000000000000..2c21f0f3b7e30c82f88c1923ac13029190e0baa0 GIT binary patch literal 1445 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L$o& z6x?nx!Kqgt=oo!av?4__ObD2EKuma|1#;lYJ~a=R){B6Ndf9J}{|pRF(w;7kAr-fB zg8Vy#3Pt|yMg?6dg-M}!_6E$k*@dOzwxj!XPC`)-KgTZn#ob%#QhZ^S{B(`qqg4;UVZgw zlHisQt%owbZrx3F`}z0n{@s@v$*}$Q-?^zvH*a3McKL$6_pVQ#%;~WFa-=6$`(dfx zw#QTC7GLE5we?{Eht*ua#?@D~YKzy#=&1{FuD;sU61Mv8&C11>?-p3d_$?PU&dJ{& zvP(#*E6GOAUv0AYN0rGZH|Vf8yv*F}p~7@4Z@V>*v)*wRi`bk7f!SxxW}nqy{ZL`E zW62c1O>OCaf0<78Dy{j$D)FF5-|P6}`3%z1uMZ{^1it)97o8hm%X4_n{L^2n_6BJ9sGVY18R9i@iN@^qqe%yEYdmw!)cND|>fz$! zYLic9m?*ve{4?xYgVqeE_1EPMZU2>cy*_^Ez5iP0S1W4l_~rj3+vy0#SA6?(^e?+V zL(;|@XQQ|G-#RmQ_jilF-~G{n6HY(Pc<;9O;CXYmx!bpBJ#uPbWLWX)z(-THm<@Wt~$(695z5BwPRh literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/signal_catch.png b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/signal_catch.png new file mode 100644 index 0000000000000000000000000000000000000000..3991897e2437fd742976cd40963a56e1c0ebd524 GIT binary patch literal 953 zcmV;q14jIbP);mRx!qG1zrIK*6HWKArXl?)#Juixx`8|z(Jtd(H4id$ZlYfUt6TSyxiU{AAlW> zbvX>buh6oxGKof`QdCrA<8N&^IB-mX#uynL9TgFg{{DU&{tY;=Vc`7ytUOa-Lqmhu zsjRHD@sBnV{Jg@lv$JJpW@ZI^e0*GdKA(+0m3BA~0NyLAv$InYrMbD;hQ9{3q#J%y zLB++zvb4065FUv{BoGML_={h)HK8>%H8nQ=v6t{x zEe-?%5{X3C1rLYA;`jS){At(WKrS$+rJ+!0U1&{PTbm7k3uL(s@6y6xFetHDEGhW> z{JiAl<=ObFuEBv4U|Gus2M3cvYr4C;ZTKQk=oWlfi>j-uQ$mY~#N%-(EiJY2_Z)`< zwOZi!`z0I>rwkVn85tR|;Q}0W3=U)hZ*+KTYpWw@OT(pV>FDUN;j_T@RN;4ZU`a`dEH5v+0*^+cQczG} z<8LGl2aW*Wb=dImuq$XyUtgaM{|f9|Hykj)6CG4rTk9%XQ&CZ2;~yjgKdS>WGc#ps zYRVJ%*w~mDV{H71HN$~zz&pLUy}jKNw5F-4$%elGGS&*et~ciA=gY#vf~WA=*;&cS z$+7VlRvR-|6=TdEpiPe(8ylINoLqgG>#47=r>Cb!53d?y`b6a8?+X$A5$RC*@)a?SnsFGaF+L0e66G4^jWh3~)t6#`T2b@5jB$=ATzyXA|yqHsN09 bzlHw*a_xEXu*?mB00000NkvXXu0mjfFqWya literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/signal_throw.png b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/images/deployer/signal_throw.png new file mode 100644 index 0000000000000000000000000000000000000000..29a16376766da595d0a080079fa23146e65d05da GIT binary patch literal 687 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 FV1gI@Q62yQ literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/index.html b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/index.html new file mode 100644 index 000000000..66a8c4fa9 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/index.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ActivitiRest.js b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ActivitiRest.js new file mode 100644 index 000000000..1afd90e00 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ActivitiRest.js @@ -0,0 +1,74 @@ +var ActivitiRest = { + options: {}, + getProcessDefinitionByKey: function(processDefinitionKey, callback) { + var url = Lang.sub(this.options.processDefinitionByKeyUrl, {processDefinitionKey: processDefinitionKey}); + + $.ajax({ + url: url, + dataType: 'jsonp', + cache: false, + async: true, + success: function(data, textStatus) { + var processDefinition = data; + if (!processDefinition) { + console.error("Process definition '" + processDefinitionKey + "' not found"); + } else { + callback.apply({processDefinitionId: processDefinition.id}); + } + } + }).done(function(data, textStatus) { + console.log("ajax done"); + }).fail(function(jqXHR, textStatus, error){ + console.error('Get diagram layout['+processDefinitionKey+'] failure: ', textStatus, 'error: ', error, jqXHR); + }); + }, + + getProcessDefinition: function(processDefinitionId, callback) { + var url = Lang.sub(this.options.processDefinitionUrl, {processDefinitionId: processDefinitionId}); + + $.ajax({ + url: url, + dataType: 'jsonp', + cache: false, + async: true, + success: function(data, textStatus) { + var processDefinitionDiagramLayout = data; + if (!processDefinitionDiagramLayout) { + console.error("Process definition diagram layout '" + processDefinitionId + "' not found"); + return; + } else { + callback.apply({processDefinitionDiagramLayout: processDefinitionDiagramLayout}); + } + } + }).done(function(data, textStatus) { + console.log("ajax done"); + }).fail(function(jqXHR, textStatus, error){ + console.log('Get diagram layout['+processDefinitionId+'] failure: ', textStatus, jqXHR); + }); + }, + + getHighLights: function(processInstanceId, callback) { + var url = Lang.sub(this.options.processInstanceHighLightsUrl, {processInstanceId: processInstanceId}); + + $.ajax({ + url: url, + dataType: 'jsonp', + cache: false, + async: true, + success: function(data, textStatus) { + console.log("ajax returned data"); + var highLights = data; + if (!highLights) { + console.log("highLights not found"); + return; + } else { + callback.apply({highLights: highLights}); + } + } + }).done(function(data, textStatus) { + console.log("ajax done"); + }).fail(function(jqXHR, textStatus, error){ + console.log('Get HighLights['+processInstanceId+'] failure: ', textStatus, jqXHR); + }); + } +}; \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ActivityImpl.js b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ActivityImpl.js new file mode 100644 index 000000000..f31021160 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ActivityImpl.js @@ -0,0 +1 @@ +/** * * @author Tom Baeyens * @author (Javascript) Dmitry Farafonov */ var ActivityImpl = function(activityJson){ this.outgoingTransitions = []; this.outgoingTransitions = []; this.incomingTransitions = []; this.activityBehavior = null; this.parent = null; this.isScope = false; this.isAsync = false; this.isExclusive = false; this.x = -1; this.y = -1; this.width = -1; this.height = -1; this.properties = {}; //console.log("activityJson: ", activityJson); if (activityJson != undefined) { this.setId(activityJson.activityId); for (var propertyName in activityJson.properties) { this.setProperty(propertyName, activityJson.properties[propertyName]); } //this.setProperty("name", activityJson.activityName); //this.setProperty("type", activityJson.activityType); this.setX(activityJson.x); this.setY(activityJson.y); this.setWidth(activityJson.width); this.setHeight(activityJson.height); if (activityJson.multiInstance) this.setProperty("multiInstance", activityJson.multiInstance); if (activityJson.collapsed) { this.setProperty("collapsed", activityJson.collapsed); } if (activityJson.isInterrupting != undefined) this.setProperty("isInterrupting", activityJson.isInterrupting); } }; ActivityImpl.prototype = { outgoingTransitions: [], outgoingTransitions: [], incomingTransitions: [], activityBehavior: null, parent: null, isScope: false, isAsync: false, isExclusive: false, id: null, properties: {}, // Graphical information x: -1, y: -1, width: -1, height: -1, setId: function(id){ this.id = id; }, getId: function(){ return this.id; }, setProperty: function(name, value){ this.properties[name] = value; }, getProperty: function(name){ return this.properties[name]; }, createOutgoingTransition: function(transitionId){ }, toString: function(id) { return "Activity("+id+")"; }, getParentActivity: function(){ /* if (parent instanceof ActivityImpl) { 79 return (ActivityImpl) parent; 80 } 81 return null; */ return this.parent; }, // restricted setters /////////////////////////////////////////////////////// setOutgoingTransitions: function(outgoingTransitions){ this.outgoingTransitions = outgoingTransitions; }, setParent: function(parent){ this.parent = parent; }, setIncomingTransitions: function(incomingTransitions){ this.incomingTransitions = incomingTransitions; }, // getters and setters ////////////////////////////////////////////////////// getOutgoingTransitions: function(){ return this.outgoingTransitions; }, getActivityBehavior: function(){ return this.activityBehavior; }, setActivityBehavior: function(activityBehavior){ this.activityBehavior = activityBehavior; }, getParent: function(){ return this.parent; }, getIncomingTransitions: function(){ return this.incomingTransitions; }, isScope: function(){ return this.isScope; }, setScope: function(isScope){ this.isScope = isScope; }, getX: function(){ return this.x; }, setX: function(x){ this.x = x; }, getY: function(){ return this.y; }, setY: function(y){ this.y = y; }, getWidth: function(){ return this.width; }, setWidth: function(width){ this.width = width; }, getHeight: function(){ return this.height; }, setHeight: function(height){ this.height = height; }, isAsync: function() { return this.isAsync; }, setAsync: function(isAsync) { this.isAsync = isAsync; }, isExclusive: function() { return this.isExclusive; }, setExclusive: function(isExclusive) { this.isExclusive = isExclusive; }, vvoid: function(){} }; \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/Color.js b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/Color.js new file mode 100644 index 000000000..e57027eff --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/Color.js @@ -0,0 +1,603 @@ +/** + * Web color table + * + * @author Dmitry Farafonov + */ + +var Color = { + /** + * The color white. In the default sRGB space. + */ + white : Raphael.getRGB("rgb(255,255,255)"), + + /** + * The color white. In the default sRGB space. + */ + WHITE : this.white, + + /** + * The color light gray. In the default sRGB space. + */ + lightGray : Raphael.getRGB("rgb(192, 192, 192)"), + + /** + * The color light gray. In the default sRGB space. + */ + LIGHT_GRAY : this.lightGray, + + /** + * The color gray. In the default sRGB space. + */ + gray : Raphael.getRGB("rgb(128, 128, 128)"), + + /** + * The color gray. In the default sRGB space. + */ + GRAY : this.gray, + + /** + * The color dark gray. In the default sRGB space. + */ + darkGray : Raphael.getRGB("rgb(64, 64, 64)"), + + /** + * The color dark gray. In the default sRGB space. + */ + DARK_GRAY : this.darkGray, + + /** + * The color black. In the default sRGB space. + */ + black : Raphael.getRGB("rgb(0, 0, 0)"), + + /** + * The color black. In the default sRGB space. + */ + BLACK : this.black, + + /** + * The color red. In the default sRGB space. + */ + red : Raphael.getRGB("rgb(255, 0, 0)"), + + /** + * The color red. In the default sRGB space. + */ + RED : this.red, + + /** + * The color pink. In the default sRGB space. + */ + pink : Raphael.getRGB("rgb(255, 175, 175)"), + + /** + * The color pink. In the default sRGB space. + */ + PINK : this.pink, + + /** + * The color orange. In the default sRGB space. + */ + orange : Raphael.getRGB("rgb(255, 200, 0)"), + + /** + * The color orange. In the default sRGB space. + */ + ORANGE : this.orange, + + /** + * The color yellow. In the default sRGB space. + */ + yellow : Raphael.getRGB("rgb(255, 255, 0)"), + + /** + * The color yellow. In the default sRGB space. + */ + YELLOW : this.yellow, + + /** + * The color green. In the default sRGB space. + */ + green : Raphael.getRGB("rgb(0, 255, 0)"), + + /** + * The color green. In the default sRGB space. + */ + GREEN : this.green, + + /** + * The color magenta. In the default sRGB space. + */ + magenta : Raphael.getRGB("rgb(255, 0, 255)"), + + /** + * The color magenta. In the default sRGB space. + */ + MAGENTA : this.magenta, + + /** + * The color cyan. In the default sRGB space. + */ + cyan : Raphael.getRGB("rgb(0, 255, 255)"), + + /** + * The color cyan. In the default sRGB space. + */ + CYAN : this.cyan, + + /** + * The color blue. In the default sRGB space. + */ + blue : Raphael.getRGB("rgb(0, 0, 255)"), + + /** + * The color blue. In the default sRGB space. + */ + BLUE : this.blue, + + /************************************************************************/ + + // http://www.stm.dp.ua/web-design/color-html.php + + Snow : Raphael.getRGB("#FFFAFA "), // 255 250 250 + GhostWhite : Raphael.getRGB("#F8F8FF "), // 248 248 255 + WhiteSmoke : Raphael.getRGB("#F5F5F5 "), // 245 245 245 + Gainsboro : Raphael.getRGB("#DCDCDC "), // 220 220 220 + FloralWhite : Raphael.getRGB("#FFFAF0 "), // 255 250 240 + OldLace : Raphael.getRGB("#FDF5E6 "), // 253 245 230 + Linen : Raphael.getRGB("#FAF0E6 "), // 250 240 230 + AntiqueWhite : Raphael.getRGB("#FAEBD7 "), // 250 235 215 + PapayaWhip : Raphael.getRGB("#FFEFD5 "), // 255 239 213 + BlanchedAlmond : Raphael.getRGB("#FFEBCD "), // 255 235 205 + Bisque : Raphael.getRGB("#FFE4C4 "), // 255 228 196 + PeachPuff : Raphael.getRGB("#FFDAB9 "), // 255 218 185 + NavajoWhite : Raphael.getRGB("#FFDEAD "), // 255 222 173 + Moccasin : Raphael.getRGB("#FFE4B5 "), // 255 228 181 + Cornsilk : Raphael.getRGB("#FFF8DC "), // 255 248 220 + Ivory : Raphael.getRGB("#FFFFF0 "), // 255 255 240 + LemonChiffon : Raphael.getRGB("#FFFACD "), // 255 250 205 + Seashell : Raphael.getRGB("#FFF5EE "), // 255 245 238 + Honeydew : Raphael.getRGB("#F0FFF0 "), // 240 255 240 + MintCream : Raphael.getRGB("#F5FFFA "), // 245 255 250 + Azure : Raphael.getRGB("#F0FFFF "), // 240 255 255 + AliceBlue : Raphael.getRGB("#F0F8FF "), // 240 248 255 + lavender : Raphael.getRGB("#E6E6FA "), // 230 230 250 + LavenderBlush : Raphael.getRGB("#FFF0F5 "), // 255 240 245 + MistyRose : Raphael.getRGB("#FFE4E1 "), // 255 228 225 + White : Raphael.getRGB("#FFFFFF "), // 255 255 255 + Black : Raphael.getRGB("#000000 "), // 0 0 0 + DarkSlateGray : Raphael.getRGB("#2F4F4F "), // 47 79 79 + DimGrey : Raphael.getRGB("#696969 "), // 105 105 105 + SlateGrey : Raphael.getRGB("#708090 "), // 112 128 144 + LightSlateGray : Raphael.getRGB("#778899 "), // 119 136 153 + Grey : Raphael.getRGB("#BEBEBE "), // 190 190 190 + LightGray : Raphael.getRGB("#D3D3D3 "), // 211 211 211 + MidnightBlue : Raphael.getRGB("#191970 "), // 25 25 112 + NavyBlue : Raphael.getRGB("#000080 "), // 0 0 128 + CornflowerBlue : Raphael.getRGB("#6495ED "), // 100 149 237 + DarkSlateBlue : Raphael.getRGB("#483D8B "), // 72 61 139 + SlateBlue : Raphael.getRGB("#6A5ACD "), // 106 90 205 + MediumSlateBlue : Raphael.getRGB("#7B68EE "), // 123 104 238 + LightSlateBlue : Raphael.getRGB("#8470FF "), // 132 112 255 + MediumBlue : Raphael.getRGB("#0000CD "), // 0 0 205 + RoyalBlue : Raphael.getRGB("#4169E1 "), // 65 105 225 + Blue : Raphael.getRGB("#0000FF "), // 0 0 255 + DodgerBlue : Raphael.getRGB("#1E90FF "), // 30 144 255 + DeepSkyBlue : Raphael.getRGB("#00BFFF "), // 0 191 255 + SkyBlue : Raphael.getRGB("#87CEEB "), // 135 206 235 + LightSkyBlue : Raphael.getRGB("#87CEFA "), // 135 206 250 + SteelBlue : Raphael.getRGB("#4682B4 "), // 70 130 180 + LightSteelBlue : Raphael.getRGB("#B0C4DE "), // 176 196 222 + LightBlue : Raphael.getRGB("#ADD8E6 "), // 173 216 230 + PowderBlue : Raphael.getRGB("#B0E0E6 "), // 176 224 230 + PaleTurquoise : Raphael.getRGB("#AFEEEE "), // 175 238 238 + DarkTurquoise : Raphael.getRGB("#00CED1 "), // 0 206 209 + MediumTurquoise : Raphael.getRGB("#48D1CC "), // 72 209 204 + Turquoise : Raphael.getRGB("#40E0D0 "), // 64 224 208 + Cyan : Raphael.getRGB("#00FFFF "), // 0 255 255 + LightCyan : Raphael.getRGB("#E0FFFF "), // 224 255 255 + CadetBlue : Raphael.getRGB("#5F9EA0 "), // 95 158 160 + MediumAquamarine: Raphael.getRGB("#66CDAA "), // 102 205 170 + Aquamarine : Raphael.getRGB("#7FFFD4 "), // 127 255 212 + DarkGreen : Raphael.getRGB("#006400 "), // 0 100 0 + DarkOliveGreen : Raphael.getRGB("#556B2F "), // 85 107 47 + DarkSeaGreen : Raphael.getRGB("#8FBC8F "), // 143 188 143 + SeaGreen : Raphael.getRGB("#2E8B57 "), // 46 139 87 + MediumSeaGreen : Raphael.getRGB("#3CB371 "), // 60 179 113 + LightSeaGreen : Raphael.getRGB("#20B2AA "), // 32 178 170 + PaleGreen : Raphael.getRGB("#98FB98 "), // 152 251 152 + SpringGreen : Raphael.getRGB("#00FF7F "), // 0 255 127 + LawnGreen : Raphael.getRGB("#7CFC00 "), // 124 252 0 + Green : Raphael.getRGB("#00FF00 "), // 0 255 0 + Chartreuse : Raphael.getRGB("#7FFF00 "), // 127 255 0 + MedSpringGreen : Raphael.getRGB("#00FA9A "), // 0 250 154 + GreenYellow : Raphael.getRGB("#ADFF2F "), // 173 255 47 + LimeGreen : Raphael.getRGB("#32CD32 "), // 50 205 50 + YellowGreen : Raphael.getRGB("#9ACD32 "), // 154 205 50 + ForestGreen : Raphael.getRGB("#228B22 "), // 34 139 34 + OliveDrab : Raphael.getRGB("#6B8E23 "), // 107 142 35 + DarkKhaki : Raphael.getRGB("#BDB76B "), // 189 183 107 + PaleGoldenrod : Raphael.getRGB("#EEE8AA "), // 238 232 170 + LtGoldenrodYello: Raphael.getRGB("#FAFAD2 "), // 250 250 210 + LightYellow : Raphael.getRGB("#FFFFE0 "), // 255 255 224 + Yellow : Raphael.getRGB("#FFFF00 "), // 255 255 0 + Gold : Raphael.getRGB("#FFD700 "), // 255 215 0 + LightGoldenrod : Raphael.getRGB("#EEDD82 "), // 238 221 130 + goldenrod : Raphael.getRGB("#DAA520 "), // 218 165 32 + DarkGoldenrod : Raphael.getRGB("#B8860B "), // 184 134 11 + RosyBrown : Raphael.getRGB("#BC8F8F "), // 188 143 143 + IndianRed : Raphael.getRGB("#CD5C5C "), // 205 92 92 + SaddleBrown : Raphael.getRGB("#8B4513 "), // 139 69 19 + Sienna : Raphael.getRGB("#A0522D "), // 160 82 45 + Peru : Raphael.getRGB("#CD853F "), // 205 133 63 + Burlywood : Raphael.getRGB("#DEB887 "), // 222 184 135 + Beige : Raphael.getRGB("#F5F5DC "), // 245 245 220 + Wheat : Raphael.getRGB("#F5DEB3 "), // 245 222 179 + SandyBrown : Raphael.getRGB("#F4A460 "), // 244 164 96 + Tan : Raphael.getRGB("#D2B48C "), // 210 180 140 + Chocolate : Raphael.getRGB("#D2691E "), // 210 105 30 + Firebrick : Raphael.getRGB("#B22222 "), // 178 34 34 + Brown : Raphael.getRGB("#A52A2A "), // 165 42 42 + DarkSalmon : Raphael.getRGB("#E9967A "), // 233 150 122 + Salmon : Raphael.getRGB("#FA8072 "), // 250 128 114 + LightSalmon : Raphael.getRGB("#FFA07A "), // 255 160 122 + Orange : Raphael.getRGB("#FFA500 "), // 255 165 0 + DarkOrange : Raphael.getRGB("#FF8C00 "), // 255 140 0 + Coral : Raphael.getRGB("#FF7F50 "), // 255 127 80 + LightCoral : Raphael.getRGB("#F08080 "), // 240 128 128 + Tomato : Raphael.getRGB("#FF6347 "), // 255 99 71 + OrangeRed : Raphael.getRGB("#FF4500 "), // 255 69 0 + Red : Raphael.getRGB("#FF0000 "), // 255 0 0 + HotPink : Raphael.getRGB("#FF69B4 "), // 255 105 180 + DeepPink : Raphael.getRGB("#FF1493 "), // 255 20 147 + Pink : Raphael.getRGB("#FFC0CB "), // 255 192 203 + LightPink : Raphael.getRGB("#FFB6C1 "), // 255 182 193 + PaleVioletRed : Raphael.getRGB("#DB7093 "), // 219 112 147 + Maroon : Raphael.getRGB("#B03060 "), // 176 48 96 + MediumVioletRed : Raphael.getRGB("#C71585 "), // 199 21 133 + VioletRed : Raphael.getRGB("#D02090 "), // 208 32 144 + Magenta : Raphael.getRGB("#FF00FF "), // 255 0 255 + Violet : Raphael.getRGB("#EE82EE "), // 238 130 238 + Plum : Raphael.getRGB("#DDA0DD "), // 221 160 221 + Orchid : Raphael.getRGB("#DA70D6 "), // 218 112 214 + MediumOrchid : Raphael.getRGB("#BA55D3 "), // 186 85 211 + DarkOrchid : Raphael.getRGB("#9932CC "), // 153 50 204 + DarkViolet : Raphael.getRGB("#9400D3 "), // 148 0 211 + BlueViolet : Raphael.getRGB("#8A2BE2 "), // 138 43 226 + Purple : Raphael.getRGB("#A020F0 "), // 160 32 240 + MediumPurple : Raphael.getRGB("#9370DB "), // 147 112 219 + Thistle : Raphael.getRGB("#D8BFD8 "), // 216 191 216 + Snow1 : Raphael.getRGB("#FFFAFA "), // 255 250 250 + Snow2 : Raphael.getRGB("#EEE9E9 "), // 238 233 233 + Snow3 : Raphael.getRGB("#CDC9C9 "), // 205 201 201 + Snow4 : Raphael.getRGB("#8B8989 "), // 139 137 137 + Seashell1 : Raphael.getRGB("#FFF5EE "), // 255 245 238 + Seashell2 : Raphael.getRGB("#EEE5DE "), // 238 229 222 + Seashell3 : Raphael.getRGB("#CDC5BF "), // 205 197 191 + Seashell4 : Raphael.getRGB("#8B8682 "), // 139 134 130 + AntiqueWhite1 : Raphael.getRGB("#FFEFDB "), // 255 239 219 + AntiqueWhite2 : Raphael.getRGB("#EEDFCC "), // 238 223 204 + AntiqueWhite3 : Raphael.getRGB("#CDC0B0 "), // 205 192 176 + AntiqueWhite4 : Raphael.getRGB("#8B8378 "), // 139 131 120 + Bisque1 : Raphael.getRGB("#FFE4C4 "), // 255 228 196 + Bisque2 : Raphael.getRGB("#EED5B7 "), // 238 213 183 + Bisque3 : Raphael.getRGB("#CDB79E "), // 205 183 158 + Bisque4 : Raphael.getRGB("#8B7D6B "), // 139 125 107 + PeachPuff1 : Raphael.getRGB("#FFDAB9 "), // 255 218 185 + PeachPuff2 : Raphael.getRGB("#EECBAD "), // 238 203 173 + PeachPuff3 : Raphael.getRGB("#CDAF95 "), // 205 175 149 + PeachPuff4 : Raphael.getRGB("#8B7765 "), // 139 119 101 + NavajoWhite1 : Raphael.getRGB("#FFDEAD "), // 255 222 173 + NavajoWhite2 : Raphael.getRGB("#EECFA1 "), // 238 207 161 + NavajoWhite3 : Raphael.getRGB("#CDB38B "), // 205 179 139 + NavajoWhite4 : Raphael.getRGB("#8B795E "), // 139 121 94 + LemonChiffon1 : Raphael.getRGB("#FFFACD "), // 255 250 205 + LemonChiffon2 : Raphael.getRGB("#EEE9BF "), // 238 233 191 + LemonChiffon3 : Raphael.getRGB("#CDC9A5 "), // 205 201 165 + LemonChiffon4 : Raphael.getRGB("#8B8970 "), // 139 137 112 + Cornsilk1 : Raphael.getRGB("#FFF8DC "), // 255 248 220 + Cornsilk2 : Raphael.getRGB("#EEE8CD "), // 238 232 205 + Cornsilk3 : Raphael.getRGB("#CDC8B1 "), // 205 200 177 + Cornsilk4 : Raphael.getRGB("#8B8878 "), // 139 136 120 + Ivory1 : Raphael.getRGB("#FFFFF0 "), // 255 255 240 + Ivory2 : Raphael.getRGB("#EEEEE0 "), // 238 238 224 + Ivory3 : Raphael.getRGB("#CDCDC1 "), // 205 205 193 + Ivory4 : Raphael.getRGB("#8B8B83 "), // 139 139 131 + Honeydew1 : Raphael.getRGB("#F0FFF0 "), // 240 255 240 + Honeydew2 : Raphael.getRGB("#E0EEE0 "), // 224 238 224 + Honeydew3 : Raphael.getRGB("#C1CDC1 "), // 193 205 193 + Honeydew4 : Raphael.getRGB("#838B83 "), // 131 139 131 + LavenderBlush1 : Raphael.getRGB("#FFF0F5 "), // 255 240 245 + LavenderBlush2 : Raphael.getRGB("#EEE0E5 "), // 238 224 229 + LavenderBlush3 : Raphael.getRGB("#CDC1C5 "), // 205 193 197 + LavenderBlush4 : Raphael.getRGB("#8B8386 "), // 139 131 134 + MistyRose1 : Raphael.getRGB("#FFE4E1 "), // 255 228 225 + MistyRose2 : Raphael.getRGB("#EED5D2 "), // 238 213 210 + MistyRose3 : Raphael.getRGB("#CDB7B5 "), // 205 183 181 + MistyRose4 : Raphael.getRGB("#8B7D7B "), // 139 125 123 + Azure1 : Raphael.getRGB("#F0FFFF "), // 240 255 255 + Azure2 : Raphael.getRGB("#E0EEEE "), // 224 238 238 + Azure3 : Raphael.getRGB("#C1CDCD "), // 193 205 205 + Azure4 : Raphael.getRGB("#838B8B "), // 131 139 139 + SlateBlue1 : Raphael.getRGB("#836FFF "), // 131 111 255 + SlateBlue2 : Raphael.getRGB("#7A67EE "), // 122 103 238 + SlateBlue3 : Raphael.getRGB("#6959CD "), // 105 89 205 + SlateBlue4 : Raphael.getRGB("#473C8B "), // 71 60 139 + RoyalBlue1 : Raphael.getRGB("#4876FF "), // 72 118 255 + RoyalBlue2 : Raphael.getRGB("#436EEE "), // 67 110 238 + RoyalBlue3 : Raphael.getRGB("#3A5FCD "), // 58 95 205 + RoyalBlue4 : Raphael.getRGB("#27408B "), // 39 64 139 + Blue1 : Raphael.getRGB("#0000FF "), // 0 0 255 + Blue2 : Raphael.getRGB("#0000EE "), // 0 0 238 + Blue3 : Raphael.getRGB("#0000CD "), // 0 0 205 + Blue4 : Raphael.getRGB("#00008B "), // 0 0 139 + DodgerBlue1 : Raphael.getRGB("#1E90FF "), // 30 144 255 + DodgerBlue2 : Raphael.getRGB("#1C86EE "), // 28 134 238 + DodgerBlue3 : Raphael.getRGB("#1874CD "), // 24 116 205 + DodgerBlue4 : Raphael.getRGB("#104E8B "), // 16 78 139 + SteelBlue1 : Raphael.getRGB("#63B8FF "), // 99 184 255 + SteelBlue2 : Raphael.getRGB("#5CACEE "), // 92 172 238 + SteelBlue3 : Raphael.getRGB("#4F94CD "), // 79 148 205 + SteelBlue4 : Raphael.getRGB("#36648B "), // 54 100 139 + DeepSkyBlue1 : Raphael.getRGB("#00BFFF "), // 0 191 255 + DeepSkyBlue2 : Raphael.getRGB("#00B2EE "), // 0 178 238 + DeepSkyBlue3 : Raphael.getRGB("#009ACD "), // 0 154 205 + DeepSkyBlue4 : Raphael.getRGB("#00688B "), // 0 104 139 + SkyBlue1 : Raphael.getRGB("#87CEFF "), // 135 206 255 + SkyBlue2 : Raphael.getRGB("#7EC0EE "), // 126 192 238 + SkyBlue3 : Raphael.getRGB("#6CA6CD "), // 108 166 205 + SkyBlue4 : Raphael.getRGB("#4A708B "), // 74 112 139 + LightSkyBlue1 : Raphael.getRGB("#B0E2FF "), // 176 226 255 + LightSkyBlue2 : Raphael.getRGB("#A4D3EE "), // 164 211 238 + LightSkyBlue3 : Raphael.getRGB("#8DB6CD "), // 141 182 205 + LightSkyBlue4 : Raphael.getRGB("#607B8B "), // 96 123 139 + SlateGray1 : Raphael.getRGB("#C6E2FF "), // 198 226 255 + SlateGray2 : Raphael.getRGB("#B9D3EE "), // 185 211 238 + SlateGray3 : Raphael.getRGB("#9FB6CD "), // 159 182 205 + SlateGray4 : Raphael.getRGB("#6C7B8B "), // 108 123 139 + LightSteelBlue1 : Raphael.getRGB("#CAE1FF "), // 202 225 255 + LightSteelBlue2 : Raphael.getRGB("#BCD2EE "), // 188 210 238 + LightSteelBlue3 : Raphael.getRGB("#A2B5CD "), // 162 181 205 + LightSteelBlue4 : Raphael.getRGB("#6E7B8B "), // 110 123 139 + LightBlue1 : Raphael.getRGB("#BFEFFF "), // 191 239 255 + LightBlue2 : Raphael.getRGB("#B2DFEE "), // 178 223 238 + LightBlue3 : Raphael.getRGB("#9AC0CD "), // 154 192 205 + LightBlue4 : Raphael.getRGB("#68838B "), // 104 131 139 + LightCyan1 : Raphael.getRGB("#E0FFFF "), // 224 255 255 + LightCyan2 : Raphael.getRGB("#D1EEEE "), // 209 238 238 + LightCyan3 : Raphael.getRGB("#B4CDCD "), // 180 205 205 + LightCyan4 : Raphael.getRGB("#7A8B8B "), // 122 139 139 + PaleTurquoise1 : Raphael.getRGB("#BBFFFF "), // 187 255 255 + PaleTurquoise2 : Raphael.getRGB("#AEEEEE "), // 174 238 238 + PaleTurquoise3 : Raphael.getRGB("#96CDCD "), // 150 205 205 + PaleTurquoise4 : Raphael.getRGB("#668B8B "), // 102 139 139 + CadetBlue1 : Raphael.getRGB("#98F5FF "), // 152 245 255 + CadetBlue2 : Raphael.getRGB("#8EE5EE "), // 142 229 238 + CadetBlue3 : Raphael.getRGB("#7AC5CD "), // 122 197 205 + CadetBlue4 : Raphael.getRGB("#53868B "), // 83 134 139 + Turquoise1 : Raphael.getRGB("#00F5FF "), // 0 245 255 + Turquoise2 : Raphael.getRGB("#00E5EE "), // 0 229 238 + Turquoise3 : Raphael.getRGB("#00C5CD "), // 0 197 205 + Turquoise4 : Raphael.getRGB("#00868B "), // 0 134 139 + Cyan1 : Raphael.getRGB("#00FFFF "), // 0 255 255 + Cyan2 : Raphael.getRGB("#00EEEE "), // 0 238 238 + Cyan3 : Raphael.getRGB("#00CDCD "), // 0 205 205 + Cyan4 : Raphael.getRGB("#008B8B "), // 0 139 139 + DarkSlateGray1 : Raphael.getRGB("#97FFFF "), // 151 255 255 + DarkSlateGray2 : Raphael.getRGB("#8DEEEE "), // 141 238 238 + DarkSlateGray3 : Raphael.getRGB("#79CDCD "), // 121 205 205 + DarkSlateGray4 : Raphael.getRGB("#528B8B "), // 82 139 139 + Aquamarine1 : Raphael.getRGB("#7FFFD4 "), // 127 255 212 + Aquamarine2 : Raphael.getRGB("#76EEC6 "), // 118 238 198 + Aquamarine3 : Raphael.getRGB("#66CDAA "), // 102 205 170 + Aquamarine4 : Raphael.getRGB("#458B74 "), // 69 139 116 + DarkSeaGreen1 : Raphael.getRGB("#C1FFC1 "), // 193 255 193 + DarkSeaGreen2 : Raphael.getRGB("#B4EEB4 "), // 180 238 180 + DarkSeaGreen3 : Raphael.getRGB("#9BCD9B "), // 155 205 155 + DarkSeaGreen4 : Raphael.getRGB("#698B69 "), // 105 139 105 + SeaGreen1 : Raphael.getRGB("#54FF9F "), // 84 255 159 + SeaGreen2 : Raphael.getRGB("#4EEE94 "), // 78 238 148 + SeaGreen3 : Raphael.getRGB("#43CD80 "), // 67 205 128 + SeaGreen4 : Raphael.getRGB("#2E8B57 "), // 46 139 87 + PaleGreen1 : Raphael.getRGB("#9AFF9A "), // 154 255 154 + PaleGreen2 : Raphael.getRGB("#90EE90 "), // 144 238 144 + PaleGreen3 : Raphael.getRGB("#7CCD7C "), // 124 205 124 + PaleGreen4 : Raphael.getRGB("#548B54 "), // 84 139 84 + SpringGreen1 : Raphael.getRGB("#00FF7F "), // 0 255 127 + SpringGreen2 : Raphael.getRGB("#00EE76 "), // 0 238 118 + SpringGreen3 : Raphael.getRGB("#00CD66 "), // 0 205 102 + SpringGreen4 : Raphael.getRGB("#008B45 "), // 0 139 69 + Green1 : Raphael.getRGB("#00FF00 "), // 0 255 0 + Green2 : Raphael.getRGB("#00EE00 "), // 0 238 0 + Green3 : Raphael.getRGB("#00CD00 "), // 0 205 0 + Green4 : Raphael.getRGB("#008B00 "), // 0 139 0 + Chartreuse1 : Raphael.getRGB("#7FFF00 "), // 127 255 0 + Chartreuse2 : Raphael.getRGB("#76EE00 "), // 118 238 0 + Chartreuse3 : Raphael.getRGB("#66CD00 "), // 102 205 0 + Chartreuse4 : Raphael.getRGB("#458B00 "), // 69 139 0 + OliveDrab1 : Raphael.getRGB("#C0FF3E "), // 192 255 62 + OliveDrab2 : Raphael.getRGB("#B3EE3A "), // 179 238 58 + OliveDrab3 : Raphael.getRGB("#9ACD32 "), // 154 205 50 + OliveDrab4 : Raphael.getRGB("#698B22 "), // 105 139 34 + DarkOliveGreen1 : Raphael.getRGB("#CAFF70 "), // 202 255 112 + DarkOliveGreen2 : Raphael.getRGB("#BCEE68 "), // 188 238 104 + DarkOliveGreen3 : Raphael.getRGB("#A2CD5A "), // 162 205 90 + DarkOliveGreen4 : Raphael.getRGB("#6E8B3D "), // 110 139 61 + Khaki1 : Raphael.getRGB("#FFF68F "), // 255 246 143 + Khaki2 : Raphael.getRGB("#EEE685 "), // 238 230 133 + Khaki3 : Raphael.getRGB("#CDC673 "), // 205 198 115 + Khaki4 : Raphael.getRGB("#8B864E "), // 139 134 78 + LightGoldenrod1 : Raphael.getRGB("#FFEC8B "), // 255 236 139 + LightGoldenrod2 : Raphael.getRGB("#EEDC82 "), // 238 220 130 + LightGoldenrod3 : Raphael.getRGB("#CDBE70 "), // 205 190 112 + LightGoldenrod4 : Raphael.getRGB("#8B814C "), // 139 129 76 + LightYellow1 : Raphael.getRGB("#FFFFE0 "), // 255 255 224 + LightYellow2 : Raphael.getRGB("#EEEED1 "), // 238 238 209 + LightYellow3 : Raphael.getRGB("#CDCDB4 "), // 205 205 180 + LightYellow4 : Raphael.getRGB("#8B8B7A "), // 139 139 122 + Yellow1 : Raphael.getRGB("#FFFF00 "), // 255 255 0 + Yellow2 : Raphael.getRGB("#EEEE00 "), // 238 238 0 + Yellow3 : Raphael.getRGB("#CDCD00 "), // 205 205 0 + Yellow4 : Raphael.getRGB("#8B8B00 "), // 139 139 0 + Gold1 : Raphael.getRGB("#FFD700 "), // 255 215 0 + Gold2 : Raphael.getRGB("#EEC900 "), // 238 201 0 + Gold3 : Raphael.getRGB("#CDAD00 "), // 205 173 0 + Gold4 : Raphael.getRGB("#8B7500 "), // 139 117 0 + Goldenrod1 : Raphael.getRGB("#FFC125 "), // 255 193 37 + Goldenrod2 : Raphael.getRGB("#EEB422 "), // 238 180 34 + Goldenrod3 : Raphael.getRGB("#CD9B1D "), // 205 155 29 + Goldenrod4 : Raphael.getRGB("#8B6914 "), // 139 105 20 + DarkGoldenrod1 : Raphael.getRGB("#FFB90F "), // 255 185 15 + DarkGoldenrod2 : Raphael.getRGB("#EEAD0E "), // 238 173 14 + DarkGoldenrod3 : Raphael.getRGB("#CD950C "), // 205 149 12 + DarkGoldenrod4 : Raphael.getRGB("#8B658B "), // 139 101 8 + RosyBrown1 : Raphael.getRGB("#FFC1C1 "), // 255 193 193 + RosyBrown2 : Raphael.getRGB("#EEB4B4 "), // 238 180 180 + RosyBrown3 : Raphael.getRGB("#CD9B9B "), // 205 155 155 + RosyBrown4 : Raphael.getRGB("#8B6969 "), // 139 105 105 + IndianRed1 : Raphael.getRGB("#FF6A6A "), // 255 106 106 + IndianRed2 : Raphael.getRGB("#EE6363 "), // 238 99 99 + IndianRed3 : Raphael.getRGB("#CD5555 "), // 205 85 85 + IndianRed4 : Raphael.getRGB("#8B3A3A "), // 139 58 58 + Sienna1 : Raphael.getRGB("#FF8247 "), // 255 130 71 + Sienna2 : Raphael.getRGB("#EE7942 "), // 238 121 66 + Sienna3 : Raphael.getRGB("#CD6839 "), // 205 104 57 + Sienna4 : Raphael.getRGB("#8B4726 "), // 139 71 38 + Burlywood1 : Raphael.getRGB("#FFD39B "), // 255 211 155 + Burlywood2 : Raphael.getRGB("#EEC591 "), // 238 197 145 + Burlywood3 : Raphael.getRGB("#CDAA7D "), // 205 170 125 + Burlywood4 : Raphael.getRGB("#8B7355 "), // 139 115 85 + Wheat1 : Raphael.getRGB("#FFE7BA "), // 255 231 186 + Wheat2 : Raphael.getRGB("#EED8AE "), // 238 216 174 + Wheat3 : Raphael.getRGB("#CDBA96 "), // 205 186 150 + Wheat4 : Raphael.getRGB("#8B7E66 "), // 139 126 102 + Tan1 : Raphael.getRGB("#FFA54F "), // 255 165 79 + Tan2 : Raphael.getRGB("#EE9A49 "), // 238 154 73 + Tan3 : Raphael.getRGB("#CD853F "), // 205 133 63 + Tan4 : Raphael.getRGB("#8B5A2B "), // 139 90 43 + Chocolate1 : Raphael.getRGB("#FF7F24 "), // 255 127 36 + Chocolate2 : Raphael.getRGB("#EE7621 "), // 238 118 33 + Chocolate3 : Raphael.getRGB("#CD661D "), // 205 102 29 + Chocolate4 : Raphael.getRGB("#8B4513 "), // 139 69 19 + Firebrick1 : Raphael.getRGB("#FF3030 "), // 255 48 48 + Firebrick2 : Raphael.getRGB("#EE2C2C "), // 238 44 44 + Firebrick3 : Raphael.getRGB("#CD2626 "), // 205 38 38 + Firebrick4 : Raphael.getRGB("#8B1A1A "), // 139 26 26 + Brown1 : Raphael.getRGB("#FF4040 "), // 255 64 64 + Brown2 : Raphael.getRGB("#EE3B3B "), // 238 59 59 + Brown3 : Raphael.getRGB("#CD3333 "), // 205 51 51 + Brown4 : Raphael.getRGB("#8B2323 "), // 139 35 35 + Salmon1 : Raphael.getRGB("#FF8C69 "), // 255 140 105 + Salmon2 : Raphael.getRGB("#EE8262 "), // 238 130 98 + Salmon3 : Raphael.getRGB("#CD7054 "), // 205 112 84 + Salmon4 : Raphael.getRGB("#8B4C39 "), // 139 76 57 + LightSalmon1 : Raphael.getRGB("#FFA07A "), // 255 160 122 + LightSalmon2 : Raphael.getRGB("#EE9572 "), // 238 149 114 + LightSalmon3 : Raphael.getRGB("#CD8162 "), // 205 129 98 + LightSalmon4 : Raphael.getRGB("#8B5742 "), // 139 87 66 + Orange1 : Raphael.getRGB("#FFA500 "), // 255 165 0 + Orange2 : Raphael.getRGB("#EE9A00 "), // 238 154 0 + Orange3 : Raphael.getRGB("#CD8500 "), // 205 133 0 + Orange4 : Raphael.getRGB("#8B5A00 "), // 139 90 0 + DarkOrange1 : Raphael.getRGB("#FF7F00 "), // 255 127 0 + DarkOrange2 : Raphael.getRGB("#EE7600 "), // 238 118 0 + DarkOrange3 : Raphael.getRGB("#CD6600 "), // 205 102 0 + DarkOrange4 : Raphael.getRGB("#8B4500 "), // 139 69 0 + Coral1 : Raphael.getRGB("#FF7256 "), // 255 114 86 + Coral2 : Raphael.getRGB("#EE6A50 "), // 238 106 80 + Coral3 : Raphael.getRGB("#CD5B45 "), // 205 91 69 + Coral4 : Raphael.getRGB("#8B3E2F "), // 139 62 47 + Tomato1 : Raphael.getRGB("#FF6347 "), // 255 99 71 + Tomato2 : Raphael.getRGB("#EE5C42 "), // 238 92 66 + Tomato3 : Raphael.getRGB("#CD4F39 "), // 205 79 57 + Tomato4 : Raphael.getRGB("#8B3626 "), // 139 54 38 + OrangeRed1 : Raphael.getRGB("#FF4500 "), // 255 69 0 + OrangeRed2 : Raphael.getRGB("#EE4000 "), // 238 64 0 + OrangeRed3 : Raphael.getRGB("#CD3700 "), // 205 55 0 + OrangeRed4 : Raphael.getRGB("#8B2500 "), // 139 37 0 + Red1 : Raphael.getRGB("#FF0000 "), // 255 0 0 + Red2 : Raphael.getRGB("#EE0000 "), // 238 0 0 + Red3 : Raphael.getRGB("#CD0000 "), // 205 0 0 + Red4 : Raphael.getRGB("#8B0000 "), // 139 0 0 + DeepPink1 : Raphael.getRGB("#FF1493 "), // 255 20 147 + DeepPink2 : Raphael.getRGB("#EE1289 "), // 238 18 137 + DeepPink3 : Raphael.getRGB("#CD1076 "), // 205 16 118 + DeepPink4 : Raphael.getRGB("#8B0A50 "), // 139 10 80 + HotPink1 : Raphael.getRGB("#FF6EB4 "), // 255 110 180 + HotPink2 : Raphael.getRGB("#EE6AA7 "), // 238 106 167 + HotPink3 : Raphael.getRGB("#CD6090 "), // 205 96 144 + HotPink4 : Raphael.getRGB("#8B3A62 "), // 139 58 98 + Pink1 : Raphael.getRGB("#FFB5C5 "), // 255 181 197 + Pink2 : Raphael.getRGB("#EEA9B8 "), // 238 169 184 + Pink3 : Raphael.getRGB("#CD919E "), // 205 145 158 + Pink4 : Raphael.getRGB("#8B636C "), // 139 99 108 + LightPink1 : Raphael.getRGB("#FFAEB9 "), // 255 174 185 + LightPink2 : Raphael.getRGB("#EEA2AD "), // 238 162 173 + LightPink3 : Raphael.getRGB("#CD8C95 "), // 205 140 149 + LightPink4 : Raphael.getRGB("#8B5F65 "), // 139 95 101 + PaleVioletRed1 : Raphael.getRGB("#FF82AB "), // 255 130 171 + PaleVioletRed2 : Raphael.getRGB("#EE799F "), // 238 121 159 + PaleVioletRed3 : Raphael.getRGB("#CD6889 "), // 205 104 137 + PaleVioletRed4 : Raphael.getRGB("#8B475D "), // 139 71 93 + Maroon1 : Raphael.getRGB("#FF34B3 "), // 255 52 179 + Maroon2 : Raphael.getRGB("#EE30A7 "), // 238 48 167 + Maroon3 : Raphael.getRGB("#CD2990 "), // 205 41 144 + Maroon4 : Raphael.getRGB("#8B1C62 "), // 139 28 98 + VioletRed1 : Raphael.getRGB("#FF3E96 "), // 255 62 150 + VioletRed2 : Raphael.getRGB("#EE3A8C "), // 238 58 140 + VioletRed3 : Raphael.getRGB("#CD3278 "), // 205 50 120 + VioletRed4 : Raphael.getRGB("#8B2252 "), // 139 34 82 + Magenta1 : Raphael.getRGB("#FF00FF "), // 255 0 255 + Magenta2 : Raphael.getRGB("#EE00EE "), // 238 0 238 + Magenta3 : Raphael.getRGB("#CD00CD "), // 205 0 205 + Magenta4 : Raphael.getRGB("#8B008B "), // 139 0 139 + Orchid1 : Raphael.getRGB("#FF83FA "), // 255 131 250 + Orchid2 : Raphael.getRGB("#EE7AE9 "), // 238 122 233 + Orchid3 : Raphael.getRGB("#CD69C9 "), // 205 105 201 + Orchid4 : Raphael.getRGB("#8B4789 "), // 139 71 137 + Plum1 : Raphael.getRGB("#FFBBFF "), // 255 187 255 + Plum2 : Raphael.getRGB("#EEAEEE "), // 238 174 238 + Plum3 : Raphael.getRGB("#CD96CD "), // 205 150 205 + Plum4 : Raphael.getRGB("#8B668B "), // 139 102 139 + MediumOrchid1 : Raphael.getRGB("#E066FF "), // 224 102 255 + MediumOrchid2 : Raphael.getRGB("#D15FEE "), // 209 95 238 + MediumOrchid3 : Raphael.getRGB("#B452CD "), // 180 82 205 + MediumOrchid4 : Raphael.getRGB("#7A378B "), // 122 55 139 + DarkOrchid1 : Raphael.getRGB("#BF3EFF "), // 191 62 255 + DarkOrchid2 : Raphael.getRGB("#B23AEE "), // 178 58 238 + DarkOrchid3 : Raphael.getRGB("#9A32CD "), // 154 50 205 + DarkOrchid4 : Raphael.getRGB("#68228B "), // 104 34 139 + Purple1 : Raphael.getRGB("#9B30FF "), // 155 48 255 + Purple2 : Raphael.getRGB("#912CEE "), // 145 44 238 + Purple3 : Raphael.getRGB("#7D26CD "), // 125 38 205 + Purple4 : Raphael.getRGB("#551A8B "), // 85 26 139 + MediumPurple1 : Raphael.getRGB("#AB82FF "), // 171 130 255 + MediumPurple2 : Raphael.getRGB("#9F79EE "), // 159 121 238 + MediumPurple3 : Raphael.getRGB("#8968CD "), // 137 104 205 + MediumPurple4 : Raphael.getRGB("#5D478B "), // 93 71 139 + Thistle1 : Raphael.getRGB("#FFE1FF "), // 255 225 255 + Thistle2 : Raphael.getRGB("#EED2EE "), // 238 210 238 + Thistle3 : Raphael.getRGB("#CDB5CD "), // 205 181 205 + Thistle4 : Raphael.getRGB("#8B7B8B "), // 139 123 139 + grey11 : Raphael.getRGB("#1C1C1C "), // 28 28 28 + grey21 : Raphael.getRGB("#363636 "), // 54 54 54 + grey31 : Raphael.getRGB("#4F4F4F "), // 79 79 79 + grey41 : Raphael.getRGB("#696969 "), // 105 105 105 + grey51 : Raphael.getRGB("#828282 "), // 130 130 130 + grey61 : Raphael.getRGB("#9C9C9C "), // 156 156 156 + grey71 : Raphael.getRGB("#B5B5B5 "), // 181 181 181 + gray81 : Raphael.getRGB("#CFCFCF "), // 207 207 207 + gray91 : Raphael.getRGB("#E8E8E8 "), // 232 232 232 + DarkGrey : Raphael.getRGB("#A9A9A9 "), // 169 169 169 + DarkBlue : Raphael.getRGB("#00008B "), // 0 0 139 + DarkCyan : Raphael.getRGB("#008B8B "), // 0 139 139 + DarkMagenta : Raphael.getRGB("#8B008B "), // 139 0 139 + DarkRed : Raphael.getRGB("#8B0000 "), // 139 0 0 + LightGreen : Raphael.getRGB("#90EE90 "), // 144 238 144 + + + + get: function(R, G, B){ + return Raphael.getRGB("rgb(" + R + ", " + G + ", " + B + ")"); + } +}; \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/LineBreakMeasurer.js b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/LineBreakMeasurer.js new file mode 100644 index 000000000..edba1a03a --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/LineBreakMeasurer.js @@ -0,0 +1,270 @@ +/** + * Word wrapping + * + * @author (Javascript) Dmitry Farafonov + */ + + var AttributedStringIterator = function(text){ + //this.text = this.rtrim(this.ltrim(text)); + text = text.replace(/(\s)+/, " "); + this.text = this.rtrim(text); + /* + if (beginIndex < 0 || beginIndex > endIndex || endIndex > length()) { + throw new IllegalArgumentException("Invalid substring range"); + } + */ + this.beginIndex = 0; + this.endIndex = this.text.length; + this.currentIndex = this.beginIndex; + + //console.group("[AttributedStringIterator]"); + var i = 0; + var string = this.text; + var fullPos = 0; + + //console.log("string: \"" + string + "\", length: " + string.length); + this.startWordOffsets = []; + this.startWordOffsets.push(fullPos); + + // TODO: remove i 1000 + while (i<1000) { + var pos = string.search(/[ \t\n\f-\.\,]/); + if (pos == -1) + break; + + // whitespace start + fullPos += pos; + string = string.substr(pos); + ////console.log("fullPos: " + fullPos + ", pos: " + pos + ", string: ", string); + + // remove whitespaces + var pos = string.search(/[^ \t\n\f-\.\,]/); + if (pos == -1) + break; + + // whitespace end + fullPos += pos; + string = string.substr(pos); + + ////console.log("fullPos: " + fullPos); + this.startWordOffsets.push(fullPos); + + i++; + } + //console.log("startWordOffsets: ", this.startWordOffsets); + //console.groupEnd(); + }; + AttributedStringIterator.prototype = { + getEndIndex: function(pos){ + if (typeof(pos) == "undefined") + return this.endIndex; + + var string = this.text.substr(pos, this.endIndex - pos); + + var posEndOfLine = string.search(/[\n]/); + if (posEndOfLine == -1) + return this.endIndex; + else + return pos + posEndOfLine; + }, + getBeginIndex: function(){ + return this.beginIndex; + }, + isWhitespace: function(pos){ + var str = this.text[pos]; + var whitespaceChars = " \t\n\f"; + + return (whitespaceChars.indexOf(str) != -1); + }, + isNewLine: function(pos){ + var str = this.text[pos]; + var whitespaceChars = "\n"; + + return (whitespaceChars.indexOf(str) != -1); + }, + preceding: function(pos){ + //console.group("[AttributedStringIterator.preceding]"); + for(var i in this.startWordOffsets) { + var startWordOffset = this.startWordOffsets[i]; + if (pos < startWordOffset && i>0) { + //console.log("startWordOffset: " + this.startWordOffsets[i-1]); + //console.groupEnd(); + return this.startWordOffsets[i-1]; + } + } + //console.log("pos: " + pos); + //console.groupEnd(); + return this.startWordOffsets[i]; + }, + following: function(pos){ + //console.group("[AttributedStringIterator.following]"); + for(var i in this.startWordOffsets) { + var startWordOffset = this.startWordOffsets[i]; + if (pos < startWordOffset && i>0) { + //console.log("startWordOffset: " + this.startWordOffsets[i]); + //console.groupEnd(); + return this.startWordOffsets[i]; + } + } + //console.log("pos: " + pos); + //console.groupEnd(); + return this.startWordOffsets[i]; + }, + ltrim: function(str){ + var patt2=/^\s+/g; + return str.replace(patt2, ""); + }, + rtrim: function(str){ + var patt2=/\s+$/g; + return str.replace(patt2, ""); + }, + getLayout: function(start, limit){ + return this.text.substr(start, limit - start); + }, + getCharAtPos: function(pos) { + return this.text[pos]; + } + }; + + var LineBreakMeasurer = function(paper, x, y, text, fontAttrs){ + this.paper = paper; + this.text = new AttributedStringIterator(text); + this.fontAttrs = fontAttrs; + + if (this.text.getEndIndex() - this.text.getBeginIndex() < 1) { + throw {message: "Text must contain at least one character.", code: "IllegalArgumentException"}; + } + + //this.measurer = new TextMeasurer(paper, this.text, this.fontAttrs); + this.limit = this.text.getEndIndex(); + this.pos = this.start = this.text.getBeginIndex(); + + this.rafaelTextObject = this.paper.text(x, y, this.text.text).attr(fontAttrs).attr("text-anchor", "start"); + this.svgTextObject = this.rafaelTextObject[0]; + }; + LineBreakMeasurer.prototype = { + nextOffset: function(wrappingWidth, offsetLimit, requireNextWord) { + //console.group("[nextOffset]"); + var nextOffset = this.pos; + if (this.pos < this.limit) { + if (offsetLimit <= this.pos) { + throw {message: "offsetLimit must be after current position", code: "IllegalArgumentException"}; + } + + var charAtMaxAdvance = this.getLineBreakIndex(this.pos, wrappingWidth); + //charAtMaxAdvance --; + //console.log("charAtMaxAdvance:", charAtMaxAdvance, ", [" + this.text.getCharAtPos(charAtMaxAdvance) + "]"); + + if (charAtMaxAdvance == this.limit) { + nextOffset = this.limit; + //console.log("charAtMaxAdvance == this.limit"); + } else if (this.text.isNewLine(charAtMaxAdvance)) { + //console.log("isNewLine"); + nextOffset = charAtMaxAdvance+1; + } else if (this.text.isWhitespace(charAtMaxAdvance)) { + // TODO: find next noSpaceChar + //return nextOffset; + nextOffset = this.text.following(charAtMaxAdvance); + } else { + // Break is in a word; back up to previous break. + /* + var testPos = charAtMaxAdvance + 1; + if (testPos == this.limit) { + console.error("hbz..."); + } else { + nextOffset = this.text.preceding(charAtMaxAdvance); + } + */ + nextOffset = this.text.preceding(charAtMaxAdvance); + + if (nextOffset <= this.pos) { + nextOffset = Math.max(this.pos+1, charAtMaxAdvance); + } + } + } + if (nextOffset > offsetLimit) { + nextOffset = offsetLimit; + } + //console.log("nextOffset: " + nextOffset); + //console.groupEnd(); + return nextOffset; + }, + nextLayout: function(wrappingWidth) { + //console.groupCollapsed("[nextLayout]"); + if (this.pos < this.limit) { + var requireNextWord = false; + var layoutLimit = this.nextOffset(wrappingWidth, this.limit, requireNextWord); + //console.log("layoutLimit:", layoutLimit); + if (layoutLimit == this.pos) { + //console.groupEnd(); + return null; + } + var result = this.text.getLayout(this.pos, layoutLimit); + //console.log("layout: \"" + result + "\""); + + // remove end of line + + //var posEndOfLine = this.text.getEndIndex(this.pos); + //if (posEndOfLine < result.length) + // result = result.substr(0, posEndOfLine); + + this.pos = layoutLimit; + + //console.groupEnd(); + return result; + } else { + //console.groupEnd(); + return null; + } + }, + getLineBreakIndex: function(pos, wrappingWidth) { + //console.group("[getLineBreakIndex]"); + //console.log("pos:"+pos + ", text: \""+ this.text.text.replace(/\n/g, "_").substr(pos, 1) + "\""); + + var bb = this.rafaelTextObject.getBBox(); + + var charNum = -1; + try { + var svgPoint = this.svgTextObject.getStartPositionOfChar(pos); + //var dot = this.paper.ellipse(svgPoint.x, svgPoint.y, 1, 1).attr({"stroke-width": 0, fill: Color.blue}); + svgPoint.x = svgPoint.x + wrappingWidth; + //svgPoint.y = bb.y; + //console.log("svgPoint:", svgPoint); + + //var dot = this.paper.ellipse(svgPoint.x, svgPoint.y, 1, 1).attr({"stroke-width": 0, fill: Color.red}); + + charNum = this.svgTextObject.getCharNumAtPosition(svgPoint); + } catch (e){ + console.warn("getStartPositionOfChar error, pos:" + pos); + /* + var testPos = pos + 1; + if (testPos < this.limit) { + return testPos + } + */ + } + //console.log("charNum:", charNum); + if (charNum == -1) { + //console.groupEnd(); + return this.text.getEndIndex(pos); + } else { + // When case there is new line between pos and charnum then use this new line + var newLineIndex = this.text.getEndIndex(pos); + if (newLineIndex < charNum ) { + console.log("newLineIndex <= charNum, newLineIndex:"+newLineIndex+", charNum:"+charNum, "\"" + this.text.text.substr(newLineIndex+1).replace(/\n/g, "?") + "\""); + //console.groupEnd(); + + return newLineIndex; + } + + //var charAtMaxAdvance = this.text.text.substring(charNum, charNum + 1); + var charAtMaxAdvance = this.text.getCharAtPos(charNum); + //console.log("!!charAtMaxAdvance: " + charAtMaxAdvance); + //console.groupEnd(); + return charNum; + } + }, + getPosition: function() { + return this.pos; + } + }; \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/Polyline.js b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/Polyline.js new file mode 100644 index 000000000..e7e4c3014 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/Polyline.js @@ -0,0 +1,387 @@ +/** + * Class to generate polyline + * + * @author Dmitry Farafonov + */ + +var ANCHOR_TYPE= { + main: "main", + middle: "middle", + first: "first", + last: "last" +}; + +function Anchor(uuid, type, x, y) { + this.uuid = uuid; + this.x = x + this.y = y + this.type = (type == ANCHOR_TYPE.middle) ? ANCHOR_TYPE.middle : ANCHOR_TYPE.main; +}; +Anchor.prototype = { + uuid: null, + x: 0, + y: 0, + type: ANCHOR_TYPE.main, + isFirst: false, + isLast: false, + ndex: 0, + typeIndex: 0 +}; + +function Polyline(uuid, points, strokeWidth) { + /* Array on coordinates: + * points: [{x: 410, y: 110}, 1 + * {x: 570, y: 110}, 1 2 + * {x: 620, y: 240}, 2 3 + * {x: 750, y: 270}, 3 4 + * {x: 650, y: 370}]; 4 + */ + this.points = points; + + /* + * path for graph + * [["M", x1, y1], ["L", x2, y2], ["C", ax, ay, bx, by, x3, y3], ["L", x3, y3]] + */ + this.path = []; + + this.anchors = []; + + if (strokeWidth) this.strokeWidth = strokeWidth; + + this.closePath = false; + + this.init(); +}; + +Polyline.prototype = { + id: null, + points: [], + path: [], + anchors: [], + strokeWidth: 1, + radius: 15, + showDetails: false, + element: null, + isDefaultConditionAvailable: false, + closePath: false, + + init: function(points){ + var linesCount = this.getLinesCount(); + if (linesCount < 1) + return; + + this.normalizeCoordinates(); + + // create anchors + + this.pushAnchor(ANCHOR_TYPE.first, this.getLine(0).x1, this.getLine(0).y1); + + for(var i = 1; i < linesCount; i++){ + var line1 = this.getLine(i-1), + line2 = this.getLine(i); + + //this.pushAnchor(ANCHOR_TYPE.middle, line1.x1 + line1.x2-line1.x1, line1.y1 + line1.y2-line1.y1); + this.pushAnchor(ANCHOR_TYPE.main, line1.x2, line1.y2); + //this.pushAnchor(ANCHOR_TYPE.middle, line2.x1 + line2.x2-line2.x1, line2.y1 + line2.y2-line2.y1); + } + + this.pushAnchor(ANCHOR_TYPE.last, this.getLine(linesCount-1).x2, this.getLine(linesCount-1).y2); + + this.rebuildPath(); + }, + + normalizeCoordinates: function(){ + for(var i=0; i < this.points.length; i++){ + this.points[i].x = parseFloat(this.points[i].x); + this.points[i].y = parseFloat(this.points[i].y); + } + }, + + getLinesCount: function(){ + return this.points.length-1; + }, + _getLine: function(i){ + return {x1: this.points[i].x, y1: this.points[i].y, x2: this.points[i+1].x, y2: this.points[i+1].y}; + }, + getLine: function(i){ + var line = this._getLine(i); + line.angle = this.getLineAngle(i) ; + return line; + }, + getLineAngle: function(i){ + var line = this._getLine(i); + return Math.atan2(line.y2 - line.y1, line.x2 - line.x1); + }, + getLineLengthX: function(i){ + var line = this.getLine(i); + return (line.x2 - line.x1); + }, + getLineLengthY: function(i){ + var line = this.getLine(i); + return (line.y2 - line.y1); + }, + getLineLength: function(i){ + var line = this.getLine(i); + return Math.sqrt(Math.pow(this.getLineLengthX(i), 2) + Math.pow(this.getLineLengthY(i), 2)); + }, + + getAnchors: function(){ + // + // ???? + return this.anchors; + }, + getAnchorsCount: function(type){ + if (!type) + return this.anchors.length; + else { + var count = 0; + for(var i=0; i < this.getAnchorsCount(); i++){ + var anchor = this.anchors[i]; + if (anchor.getType() == type) { + count++; + } + } + return count; + } + }, + + pushAnchor: function(type, x, y, index){ + if (type == ANCHOR_TYPE.first) { + index = 0; + typeIndex = 0; + } else if (type == ANCHOR_TYPE.last) { + index = this.getAnchorsCount(); + typeIndex = 0; + } else if (!index) { + index = this.anchors.length; + } else { + // anchors, , index + //var anchor = this.getAnchor() + for(var i=0; i < this.getAnchorsCount(); i++){ + var anchor = this.anchors[i]; + if (anchor.index > index) { + anchor.index++; + anchor.typeIndex++; + } + } + } + + var anchor = new Anchor(this.id, ANCHOR_TYPE.main, x, y, index, typeIndex); + + this.anchors.push(anchor); + }, + + getAnchor: function(position){ + return this.anchors[position]; + }, + + getAnchorByType: function(type, position){ + if (type == ANCHOR_TYPE.first) + return this.anchors[0]; + if (type == ANCHOR_TYPE.last) + return this.anchors[this.getAnchorsCount()-1]; + + for(var i=0; i < this.getAnchorsCount(); i++){ + var anchor = this.anchors[i]; + if (anchor.type == type) { + if( position == anchor.position) + return anchor; + } + } + return null; + }, + + addNewPoint: function(position, x, y){ + // + for(var i = 0; i < this.getLinesCount(); i++){ + var line = this.getLine(i); + if (x > line.x1 && x < line.x2 && y > line.y1 && y < line.y2) { + this.points.splice(i+1,0,{x: x, y: y}); + break; + } + } + + this.rebuildPath(); + }, + + rebuildPath: function(){ + var path = []; + + for(var i = 0; i < this.getAnchorsCount(); i++){ + var anchor = this.getAnchor(i); + + var pathType = "" + if (i==0) + pathType = "M"; + else + pathType = "L"; + +// TODO: save previous points and calculate new path just if points are updated, and then save currents values as previous + + var targetX = anchor.x, targetY = anchor.y; + if (i>0 && i < this.getAnchorsCount()-1) { + // get new x,y + var cx = anchor.x, cy = anchor.y; + + // pivot point of prev line + var AO = this.getLineLength(i-1); + if (AO < this.radius) { + AO = this.radius; + } + + this.isDefaultConditionAvailable = (this.isDefaultConditionAvailable || (i == 1 && AO > 10)); + //console.log("isDefaultConditionAvailable", this.isDefaultConditionAvailable); + + var ED = this.getLineLengthY(i-1) * this.radius / AO; + var OD = this.getLineLengthX(i-1) * this.radius / AO; + targetX = anchor.x - OD; + targetY = anchor.y - ED; + + if (AO < 2*this.radius && i>1) { + targetX = anchor.x - this.getLineLengthX(i-1)/2; + targetY = anchor.y - this.getLineLengthY(i-1)/2;; + } + + // pivot point of next line + var AO = this.getLineLength(i); + if (AO < this.radius) { + AO = this.radius; + } + var ED = this.getLineLengthY(i) * this.radius / AO; + var OD = this.getLineLengthX(i) * this.radius / AO; + var nextSrcX = anchor.x + OD; + var nextSrcY = anchor.y + ED; + + if (AO < 2*this.radius && i 10)); + //console.log("-- isDefaultConditionAvailable", this.isDefaultConditionAvailable); + } + + // anti smoothing + if (this.strokeWidth%2 == 1) { + targetX += 0.5; + targetY += 0.5; + } + + path.push([pathType, targetX, targetY]); + + if (i>0 && i < this.getAnchorsCount()-1) { + path.push(["C", ax, ay, bx, by, zx, zy]); + } + } + + if (this.closePath) { + console.log("closePath:", this.closePath); + path.push(["Z"]); + } + + this.path = path; + }, + + transform: function(transformation){ + this.element.transform(transformation); + }, + attr: function(attrs){ + //console.log("attrs: " +attrs, "", this.element); + // TODO: foreach and set each + this.element.attr(attrs); + } +}; + +function Polygone(points, strokeWidth) { + /* Array on coordinates: + * points: [{x: 410, y: 110}, 1 + * {x: 570, y: 110}, 1 2 + * {x: 620, y: 240}, 2 3 + * {x: 750, y: 270}, 3 4 + * {x: 650, y: 370}]; 4 + */ + this.points = points; + + /* + * path for graph + * [["M", x1, y1], ["L", x2, y2], ["C", ax, ay, bx, by, x3, y3], ["L", x3, y3]] + */ + this.path = []; + + this.anchors = []; + + if (strokeWidth) this.strokeWidth = strokeWidth; + + this.closePath = true; + this.init(); +}; + + +/* + * Poligone is inherited from Poliline: draws closedPath of polyline + */ + +var Foo = function () { }; +Foo.prototype = Polyline.prototype; + +Polygone.prototype = new Foo(); + +Polygone.prototype.rebuildPath = function(){ + var path = []; + //console.log("Polygone rebuildPath"); + for(var i = 0; i < this.getAnchorsCount(); i++){ + var anchor = this.getAnchor(i); + + var pathType = "" + if (i==0) + pathType = "M"; + else + pathType = "L"; + + var targetX = anchor.x, targetY = anchor.y; + + // anti smoothing + if (this.strokeWidth%2 == 1) { + targetX += 0.5; + targetY += 0.5; + } + + path.push([pathType, targetX, targetY]); + } + if (this.closePath) + path.push(["Z"]); + + this.path = path; +}; +/* +Polygone.prototype.transform = function(transformation){ + this.element.transform(transformation); +}; +*/ \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ProcessDiagramCanvas.js b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ProcessDiagramCanvas.js new file mode 100644 index 000000000..eadbe9c34 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ProcessDiagramCanvas.js @@ -0,0 +1,2172 @@ +/** + * Represents a canvas on which BPMN 2.0 constructs can be drawn. + * + * Some of the icons used are licenced under a Creative Commons Attribution 2.5 + * License, see http://www.famfamfam.com/lab/icons/silk/ + * + * @see ProcessDiagramGenerator + * @author (Java) Joram Barrez + * @author (Javascript) Dmitry Farafonov + */ + +//Color.Cornsilk + +var ARROW_HEAD_SIMPLE = "simple"; +var ARROW_HEAD_EMPTY = "empty"; +var ARROW_HEAD_FILL = "FILL"; +var MULTILINE_VERTICAL_ALIGN_TOP = "top"; +var MULTILINE_VERTICAL_ALIGN_MIDDLE = "middle"; +var MULTILINE_VERTICAL_ALIGN_BOTTOM = "bottom"; +var MULTILINE_HORIZONTAL_ALIGN_LEFT = "start"; +var MULTILINE_HORIZONTAL_ALIGN_MIDDLE = "middle"; +var MULTILINE_HORIZONTAL_ALIGN_RIGHT = "end"; + +// Predefined sized +var TEXT_PADDING = 3; +var ARROW_WIDTH = 4; +var CONDITIONAL_INDICATOR_WIDTH = 16; +var MARKER_WIDTH = 12; +var ANNOTATION_TEXT_PADDING = 7; + +// Colors +var TASK_COLOR = Color.OldLace; // original: Color.get(255, 255, 204); +var TASK_STROKE_COLOR = Color.black; /*Color.SlateGrey; */ +//var EXPANDED_SUBPROCESS_ATTRS = Color.black; /*Color.SlateGrey; */ +var BOUNDARY_EVENT_COLOR = Color.white; +var CONDITIONAL_INDICATOR_COLOR = Color.get(255, 255, 255); +var HIGHLIGHT_COLOR = Color.Firebrick1; +//var SEQUENCEFLOW_COLOR = Color.DimGrey; +var SEQUENCEFLOW_COLOR = Color.black; + +var CATCHING_EVENT_COLOR = Color.black; /* Color.SlateGrey; */ +var START_EVENT_COLOR = Color.get(251,251,251); +var START_EVENT_STROKE_COLOR = Color.black; /* Color.SlateGrey; */ +var END_EVENT_COLOR = Color.get(251,251,251); +//var END_EVENT_STROKE_COLOR = Color.black; +var NONE_END_EVENT_COLOR = Color.Firebrick4; +var NONE_END_EVENT_STROKE_COLOR = Color.Firebrick4; +var ERROR_END_EVENT_COLOR = Color.Firebrick; +var ERROR_END_EVENT_STROKE_COLOR = Color.Firebrick; +//var LABEL_COLOR = Color.get(112, 146, 190); +var LABEL_COLOR = Color.get(72, 106, 150); + +// Fonts +var NORMAL_FONT = {font: "10px Arial", opacity: 1, fill: Color.black}; +var LABEL_FONT = {font: "11px Arial", "font-style":"italic", opacity: 1, "fill": LABEL_COLOR}; +var LABEL_FONT_SMOOTH = {font: "10px Arial", "font-style":"italic", opacity: 1, "fill": LABEL_COLOR, stroke: LABEL_COLOR, "stroke-width":.4}; +var TASK_FONT = {font: "11px Arial", opacity: 1, fill: Color.black}; +var TASK_FONT_SMOOTH = {font: "11px Arial", opacity: 1, fill: Color.black, stroke: LABEL_COLOR, "stroke-width":.4}; +var POOL_LANE_FONT = {font: "11px Arial", opacity: 1, fill: Color.black}; +var EXPANDED_SUBPROCESS_FONT = {font: "11px Arial", opacity: 1, fill: Color.black}; + +// Strokes +var NORMAL_STROKE = 1; +var SEQUENCEFLOW_STROKE = 1.5; +var SEQUENCEFLOW_HIGHLIGHT_STROKE = 2; +var THICK_TASK_BORDER_STROKE = 2.5; +var GATEWAY_TYPE_STROKE = 3.2; +var END_EVENT_STROKE = NORMAL_STROKE+2; +var MULTI_INSTANCE_STROKE = 1.3; +var EVENT_SUBPROCESS_ATTRS = {"stroke": Color.black, "stroke-width": NORMAL_STROKE, "stroke-dasharray": ". "}; +//var EXPANDED_SUBPROCESS_ATTRS = {"stroke": Color.black, "stroke-width": NORMAL_STROKE, "fill": Color.FloralWhite}; +var EXPANDED_SUBPROCESS_ATTRS = {"stroke": Color.black, "stroke-width": NORMAL_STROKE, "fill": Color.WhiteSmoke}; +var NON_INTERRUPTING_EVENT_STROKE = "- "; + +var TASK_CORNER_ROUND = 10; +var EXPANDED_SUBPROCESS_CORNER_ROUND = 10; + +// icons +var ICON_SIZE = 16; +var ICON_PADDING = 4; +var USERTASK_IMAGE = "images/deployer/user.png"; +var SCRIPTTASK_IMAGE = "images/deployer/script.png"; +var SERVICETASK_IMAGE = "images/deployer/service.png"; +var RECEIVETASK_IMAGE = "images/deployer/receive.png"; +var SENDTASK_IMAGE = "images/deployer/send.png"; +var MANUALTASK_IMAGE = "images/deployer/manual.png"; +var BUSINESS_RULE_TASK_IMAGE = "images/deployer/business_rule.png"; +var TIMER_IMAGE = "images/deployer/timer.png"; +var MESSAGE_CATCH_IMAGE = "images/deployer/message_catch.png"; +var MESSAGE_THROW_IMAGE = "images/deployer/message_throw.png"; +var ERROR_THROW_IMAGE = "images/deployer/error_throw.png"; +var ERROR_CATCH_IMAGE = "images/deployer/error_catch.png"; +var SIGNAL_CATCH_IMAGE = "images/deployer/signal_catch.png"; +var SIGNAL_THROW_IMAGE = "images/deployer/signal_throw.png"; +var MULTIPLE_CATCH_IMAGE = "images/deployer/multiple_catch.png"; + + +var ObjectType = { + ELLIPSE: "ellipse", + FLOW: "flow", + RECT: "rect", + RHOMBUS: "rhombus" +}; + +function OBJ(type){ + this.c = null; + this.type = type; + this.nestedElements = []; +}; +OBJ.prototype = { + +}; + +var CONNECTION_TYPE = { + SEQUENCE_FLOW: "sequence_flow", + MESSAGE_FLOW: "message_flow", + ASSOCIATION: "association" +}; + +var ProcessDiagramCanvas = function(){ +}; +ProcessDiagramCanvas.prototype = { +// var DefaultProcessDiagramCanvas = { + canvasHolder: "holder", + canvasWidth: 0, + canvasHeight: 0, + paint: Color.black, + strokeWidth: 0, + font: null, + fontSmoothing: null, + + g: null, + ninjaPaper: null, + + objects: [], + + processDefinitionId: null, + activity: null, + + frame: null, + + + debug: false, + + /** + * Creates an empty canvas with given width and height. + */ + init: function(width, height, processDefinitionId){ + this.canvasWidth = width; + this.canvasHeight = height; + + // TODO: name it as 'canvasName' + if (!processDefinitionId) + processDefinitionId = "holder"; + + this.processDefinitionId = processDefinitionId; + this.canvasHolder = this.processDefinitionId; + + var h = document.getElementById(this.canvasHolder); + if (!h) return; + + h.style.width = this.canvasWidth; + h.style.height = this.canvasHeight; + + this.g = Raphael(this.canvasHolder); + this.g.clear(); + + //this.setPaint(Color.DimGrey); + this.setPaint(Color.black); + //this.setPaint(Color.white); + this.setStroke(NORMAL_STROKE); + + //this.setFont("Arial", 11); + this.setFont(NORMAL_FONT); + //this.font = this.g.getFont("Arial"); + + this.fontSmoothing = true; + + // ninja! + var RaphaelOriginal = Raphael; + this.ninjaPaper =(function (local_raphael) { + var paper = local_raphael(1, 1, 1, 1, processDefinitionId); + return paper; + })(Raphael.ninja()); + Raphael = RaphaelOriginal; + }, + setPaint: function(color){ + this.paint = color; + }, + getPaint: function(){ + return this.paint; + }, + setStroke: function(strokeWidth){ + this.strokeWidth = strokeWidth; + }, + getStroke: function(){ + return this.strokeWidth; + }, + /* + setFont: function(family, weight, style, stretch){ + this.font = this.g.getFont(family, weight); + }, + */ + setFont: function(font){ + this.font = font; + }, + getFont: function(){ + return this.font; + }, + drawShaddow: function(object){ + var border = object.clone(); + border.attr({"stroke-width": this.strokeWidth + 6, + "stroke": Color.white, + "fill": Color.white, + "opacity": 1, + "stroke-dasharray":null}); + //border.toBack(); + object.toFront(); + + return border; + }, + + setConextObject: function(obj){ + this.contextObject = obj; + }, + getConextObject: function(){ + return this.contextObject; + }, + setContextToElement: function(object){ + var contextObject = this.getConextObject(); + object.id = contextObject.id; + object.data("contextObject", contextObject); + }, + onClick: function(event, instance, element){ + var overlay = element; + var set = overlay.data("set"); + var contextObject = overlay.data("contextObject"); + //console.log("["+contextObject.getProperty("type")+"], activityId: " + contextObject.getId()); + if (ProcessDiagramGenerator.options && ProcessDiagramGenerator.options.on && ProcessDiagramGenerator.options.on.click) { + var args = [instance, element, contextObject]; + ProcessDiagramGenerator.options.on.click.apply(event, args); + } + }, + onRightClick: function(event, instance, element){ + var overlay = element; + var set = overlay.data("set"); + var contextObject = overlay.data("contextObject"); + //console.log("[%s], activityId: %s (RIGHTCLICK)", contextObject.getProperty("type"), contextObject.getId()); + + if (ProcessDiagramGenerator.options && ProcessDiagramGenerator.options.on && ProcessDiagramGenerator.options.on.rightClick) { + var args = [instance, element, contextObject]; + ProcessDiagramGenerator.options.on.rightClick.apply(event, args); + } + }, + onHoverIn: function(event, instance, element){ + var overlay = element; + var set = overlay.data("set"); + var contextObject = overlay.data("contextObject"); + + var border = instance.g.getById(contextObject.id + "_border"); + border.attr("opacity", 0.3); + + // provide callback + if (ProcessDiagramGenerator.options && ProcessDiagramGenerator.options.on && ProcessDiagramGenerator.options.on.over) { + var args = [instance, element, contextObject]; + ProcessDiagramGenerator.options.on.over.apply(event, args); + } + }, + onHoverOut: function(event, instance, element){ + var overlay = element; + var set = overlay.data("set"); + var contextObject = overlay.data("contextObject"); + + var border = instance.g.getById(contextObject.id + "_border"); + border.attr("opacity", 0.0); + // provide callback + if (ProcessDiagramGenerator.options && ProcessDiagramGenerator.options.on && ProcessDiagramGenerator.options.on.out) { + var args = [instance, element, contextObject]; + ProcessDiagramGenerator.options.on.out.apply(event, args); + } + }, + addHandlers: function(set, x, y, width, height, type){ + var contextObject = this.getConextObject(); + + var cx = x+width/2, cy = y+height/2; + if (type == "event") { + var border = this.g.ellipse(cx, cy, width/2+4, height/2+4); + var overlay = this.g.ellipse(cx, cy, width/2, height/2); + } else if (type == "gateway") { + // rhombus + var border = this.g.path( "M" + (x - 4) + " " + (y + (height / 2)) + + "L" + (x + (width / 2)) + " " + (y + height + 4) + + "L" + (x + width + 4) + " " + (y + (height / 2)) + + "L" + (x + (width / 2)) + " " + (y - 4) + + "z" ); + var overlay = this.g.path( "M" + x + " " + (y + (height / 2)) + + "L" + (x + (width / 2)) + " " + (y + height) + + "L" + (x + width) + " " + (y + (height / 2)) + + "L" + (x + (width / 2)) + " " + y + + "z" ); + } else if (type == "task") { + var border = this.g.rect(x - 4, y - 4, width+9, height+9, TASK_CORNER_ROUND+4); + var overlay = this.g.rect(x, y, width, height, TASK_CORNER_ROUND); + } + + border.attr({stroke: Color.get(132,112,255)/*Color.Tan1*/,"stroke-width": 4, opacity: 0.0}); + border.id = contextObject.id + "_border"; + + set.push(border); + + overlay.attr({stroke: Color.Orange,"stroke-width": 3, fill: Color.get(0,0,0), opacity: 0.0, cursor: "hand"}); + overlay.data("set",set); + overlay.id = contextObject.id; + overlay.data("contextObject",contextObject); + + var instance = this; + overlay.mousedown(function(event){if (event.button == 2) instance.onRightClick(event, instance, this);}); + overlay.click(function(event){instance.onClick(event, instance, this);}); + overlay.hover(function(event){instance.onHoverIn(event, instance, this);}, function(event){instance.onHoverOut(event, instance, this);}); + }, + + /* + * Start Events: + * + * drawNoneStartEvent + * drawTimerStartEvent + * drawMessageStartEvent + * drawErrorStartEvent + * drawSignalStartEvent + * _drawStartEventImage + * _drawStartEvent + */ + + drawNoneStartEvent: function(x, y, width, height) { + this.g.setStart(); + + var isInterrupting = undefined; + this._drawStartEvent(x, y, width, height, isInterrupting, null); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawTimerStartEvent: function(x, y, width, height, isInterrupting, name) { + this.g.setStart(); + + this._drawStartEvent(x, y, width, height, isInterrupting, null); + + var cx = x + width/2 - this.getStroke()/4; + var cy = y + height/2 - this.getStroke()/4; + + var w = width*.9;// - this.getStroke()*2; + var h = height*.9;// - this.getStroke()*2; + + this._drawClock(cx, cy, w, h); + + if (this.gebug) + var center = this.g.ellipse(cx, cy, 3, 3).attr({stroke:"none", fill: Color.green}); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawMessageStartEvent: function(x, y, width, height, isInterrupting, name) { + this.g.setStart(); + + this._drawStartEvent(x, y, width, height, isInterrupting, null); + + this._drawStartEventImage(x, y, width, height, MESSAGE_CATCH_IMAGE); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawErrorStartEvent: function(x, y, width, height, name) { + this.g.setStart(); + var isInterrupting = undefined; + this._drawStartEvent(x, y, width, height, isInterrupting); + + this._drawStartEventImage(x, y, width, height, ERROR_CATCH_IMAGE); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawSignalStartEvent: function(x, y, width, height, isInterrupting, name) { + this.g.setStart(); + this._drawStartEvent(x, y, width, height, isInterrupting, null); + + this._drawStartEventImage(x, y, width, height, SIGNAL_CATCH_IMAGE); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawMultipleStartEvent: function(x, y, width, height, isInterrupting, name) { + this.g.setStart(); + + this._drawStartEvent(x, y, width, height, isInterrupting, null); + + var cx = x + width/2 - this.getStroke()/4; + var cy = y + height/2 - this.getStroke()/4; + + var w = width*1; + var h = height*1; + + this._drawPentagon(cx, cy, w, h); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + _drawStartEventImage: function(x, y, width, height, image){ + var cx = x + width/2 - this.getStroke()/2; + var cy = y + height/2 - this.getStroke()/2; + + var w = width*.65;// - this.getStroke()*2; + var h = height*.65;// - this.getStroke()*2; + + var img = this.g.image(image, cx-w/2, cy-h/2, w, h); + }, + _drawStartEvent: function(x, y, width, height, isInterrupting){ + var originalPaint = this.getPaint(); + if (typeof(START_EVENT_STROKE_COLOR) != "undefined") + this.setPaint(START_EVENT_STROKE_COLOR); + + + width -= this.strokeWidth / 2; + height -= this.strokeWidth / 2; + + x = x + width/2; + y = y + height/2; + + var circle = this.g.ellipse(x, y, width/2, height/2); + + circle.attr({"stroke-width": this.strokeWidth, + "stroke": this.paint, + //"stroke": START_EVENT_STROKE_COLOR, + "fill": START_EVENT_COLOR}); + + // white shaddow + this.drawShaddow(circle); + + if (isInterrupting!=null && isInterrupting!=undefined && !isInterrupting) + circle.attr({"stroke-dasharray": NON_INTERRUPTING_EVENT_STROKE}); + + this.setContextToElement(circle); + + + this.setPaint(originalPaint); + }, + + /* + * End Events: + * + * drawNoneEndEvent + * drawErrorEndEvent + * drawMessageEndEvent + * drawSignalEndEvent + * drawMultipleEndEvent + * _drawEndEventImage + * _drawNoneEndEvent + */ + + drawNoneEndEvent: function(x, y, width, height) { + this.g.setStart(); + + this._drawNoneEndEvent(x, y, width, height, null, "noneEndEvent"); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawErrorEndEvent: function(x, y, width, height) { + this.g.setStart(); + var type = "errorEndEvent"; + this._drawNoneEndEvent(x, y, width, height, null, type); + + this._drawEndEventImage(x, y, width, height, ERROR_THROW_IMAGE); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawMessageEndEvent: function(x, y, width, height, name) { + this.g.setStart(); + var type = "errorEndEvent"; + this._drawNoneEndEvent(x, y, width, height, null, type); + + this._drawEndEventImage(x, y, width, height, MESSAGE_THROW_IMAGE); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawSignalEndEvent: function(x, y, width, height, name) { + this.g.setStart(); + var type = "errorEndEvent"; + this._drawNoneEndEvent(x, y, width, height, null, type); + + this._drawEndEventImage(x, y, width, height, SIGNAL_THROW_IMAGE); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawMultipleEndEvent: function(x, y, width, height, name) { + this.g.setStart(); + var type = "errorEndEvent"; + this._drawNoneEndEvent(x, y, width, height, null, type); + + var cx = x + width/2;// - this.getStroke(); + var cy = y + height/2;// - this.getStroke(); + + var w = width*1; + var h = height*1; + + var filled = true; + this._drawPentagon(cx, cy, w, h, filled); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawTerminateEndEvent: function(x, y, width, height) { + this.g.setStart(); + var type = "errorEndEvent"; + this._drawNoneEndEvent(x, y, width, height, null, type); + + var cx = x + width/2;// - this.getStroke()/2; + var cy = y + height/2;// - this.getStroke()/2; + + var w = width/2*.6; + var h = height/2*.6; + + var circle = this.g.ellipse(cx, cy, w, h).attr({fill: Color.black}); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + _drawEndEventImage: function(x, y, width, height, image){ + var cx = x + width/2 - this.getStroke()/2; + var cy = y + height/2 - this.getStroke()/2; + + var w = width*.65; + var h = height*.65; + + var img = this.g.image(image, cx-w/2, cy-h/2, w, h); + }, + + _drawNoneEndEvent: function(x, y, width, height, image, type) { + var originalPaint = this.getPaint(); + if (typeof(CATCHING_EVENT_COLOR) != "undefined") + this.setPaint(CATCHING_EVENT_COLOR); + + var strokeColor = this.getPaint(); + var fillColor = this.getPaint(); + + if (type == "errorEndEvent") { + strokeColor = ERROR_END_EVENT_STROKE_COLOR; + fillColor = ERROR_END_EVENT_COLOR; + } else if (type == "noneEndEvent") { + strokeColor = NONE_END_EVENT_STROKE_COLOR; + fillColor = NONE_END_EVENT_COLOR; + } else + + // event circles + width -= this.strokeWidth / 2; + height -= this.strokeWidth / 2; + + x = x + width/2;// + this.strokeWidth/2; + y = y + width/2;// + this.strokeWidth/2; + + // outerCircle + var outerCircle = this.g.ellipse(x, y, width/2, height/2); + + // white shaddow + var shaddow = this.drawShaddow(outerCircle); + + outerCircle.attr({"stroke-width": this.strokeWidth, + "stroke": strokeColor, + "fill": fillColor}); + + var innerCircleX = x; + var innerCircleY = y; + var innerCircleWidth = width/2 - 2; + var innerCircleHeight = height/2 - 2; + var innerCircle = this.g.ellipse(innerCircleX, innerCircleY, innerCircleWidth, innerCircleHeight); + innerCircle.attr({"stroke-width": this.strokeWidth, + "stroke": strokeColor, + "fill": Color.white}); + + // TODO: implement it + //var originalPaint = this.getPaint(); + //this.g.setPaint(BOUNDARY_EVENT_COLOR); + + this.setPaint(originalPaint); + }, + + /* + * Catching Events: + * + * drawCatchingTimerEvent + * drawCatchingErrorEvent + * drawCatchingSignalEvent + * drawCatchingMessageEvent + * drawCatchingMultipleEvent + * _drawCatchingEventImage + * _drawCatchingEvent + */ + + + drawCatchingTimerEvent: function(x, y, width, height, isInterrupting, name) { + this.g.setStart(); + this._drawCatchingEvent(x, y, width, height, isInterrupting, null); + + var innerCircleWidth = width - 4; + var innerCircleHeight = height - 4; + + var cx = x + width/2 - this.getStroke()/4; + var cy = y + height/2 - this.getStroke()/4; + + var w = innerCircleWidth*.9;// - this.getStroke()*2; + var h = innerCircleHeight*.9;// - this.getStroke()*2; + + this._drawClock(cx, cy, w, h); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawCatchingErrorEvent: function(x, y, width, height, isInterrupting, name) { + this.g.setStart(); + this._drawCatchingEvent(x, y, width, height, isInterrupting, null); + + this._drawCatchingEventImage(x, y, width, height, ERROR_CATCH_IMAGE); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawCatchingSignalEvent: function(x, y, width, height, isInterrupting, name) { + this.g.setStart(); + this._drawCatchingEvent(x, y, width, height, isInterrupting, null); + + this._drawCatchingEventImage(x, y, width, height, SIGNAL_CATCH_IMAGE); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawCatchingMessageEvent: function(x, y, width, height, isInterrupting, name) { + this.g.setStart(); + this._drawCatchingEvent(x, y, width, height, isInterrupting, null); + + this._drawCatchingEventImage(x, y, width, height, MESSAGE_CATCH_IMAGE); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawCatchingMultipleEvent: function(x, y, width, height, isInterrupting, name) { + this.g.setStart(); + this._drawCatchingEvent(x, y, width, height, isInterrupting, null); + + var cx = x + width/2 - this.getStroke(); + var cy = y + height/2 - this.getStroke(); + + var w = width*.9; + var h = height*.9; + + this._drawPentagon(cx, cy, w, h); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + _drawCatchingEventImage: function(x, y, width, height, image){ + var innerCircleWidth = width - 4; + var innerCircleHeight = height - 4; + + var cx = x + width/2 - this.getStroke()/2; + var cy = y + height/2 - this.getStroke()/2; + + var w = innerCircleWidth*.6;// - this.getStroke()*2; + var h = innerCircleHeight*.6;// - this.getStroke()*2; + + var img = this.g.image(image, cx-w/2, cy-h/2, w, h); + }, + + _drawCatchingEvent: function(x, y, width, height, isInterrupting, image) { + var originalPaint = this.getPaint(); + if (typeof(CATCHING_EVENT_COLOR) != "undefined") + this.setPaint(CATCHING_EVENT_COLOR); + + // event circles + width -= this.strokeWidth / 2; + height -= this.strokeWidth / 2; + + x = x + width/2;// + this.strokeWidth/2; + y = y + width/2;// + this.strokeWidth/2; + + // outerCircle + var outerCircle = this.g.ellipse(x, y, width/2, height/2); + + // white shaddow + var shaddow = this.drawShaddow(outerCircle); + + //console.log("isInterrupting: " + isInterrupting, "x:" , x, "y:",y); + if (isInterrupting!=null && isInterrupting!=undefined && !isInterrupting) + outerCircle.attr({"stroke-dasharray": NON_INTERRUPTING_EVENT_STROKE}); + + outerCircle.attr({"stroke-width": this.strokeWidth, + "stroke": this.getPaint(), + "fill": BOUNDARY_EVENT_COLOR}); + + var innerCircleX = x; + var innerCircleY = y; + var innerCircleRadiusX = width/2 - 4; + var innerCircleRadiusY = height/2 - 4; + var innerCircle = this.g.ellipse(innerCircleX, innerCircleY, innerCircleRadiusX, innerCircleRadiusY); + innerCircle.attr({"stroke-width": this.strokeWidth, + "stroke": this.getPaint()}); + + if (image) { + var imageWidth = imageHeight = innerCircleRadiusX*1.2 + this.getStroke()*2; + var imageX = innerCircleX-imageWidth/2 - this.strokeWidth/2; + var imageY = innerCircleY-imageWidth/2 - this.strokeWidth/2; + var img = this.g.image(image, imageX, imageY, imageWidth, imageHeight); + } + + this.setPaint(originalPaint); + + var set = this.g.set(); + set.push(outerCircle, innerCircle, shaddow); + this.setContextToElement(outerCircle); + + // TODO: add shapes to set + + /* + var st = this.g.set(); + st.push( + this.g.ellipse(innerCircleX, innerCircleY, 2, 2), + this.g.ellipse(imageX, imageY, 2, 2) + ); + st.attr({fill: "red", "stroke-width":0}); + */ + }, + + /* + * Catching Events: + * + * drawThrowingNoneEvent + * drawThrowingSignalEvent + * drawThrowingMessageEvent + * drawThrowingMultipleEvent + */ + + drawThrowingNoneEvent: function(x, y, width, height, name) { + this.g.setStart(); + this._drawCatchingEvent(x, y, width, height, null, null); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawThrowingSignalEvent: function(x, y, width, height, name) { + this.g.setStart(); + this._drawCatchingEvent(x, y, width, height, null, null); + + this._drawCatchingEventImage(x, y, width, height, SIGNAL_THROW_IMAGE); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawThrowingMessageEvent: function(x, y, width, height, name) { + this.g.setStart(); + this._drawCatchingEvent(x, y, width, height, null, null); + + this._drawCatchingEventImage(x, y, width, height, MESSAGE_THROW_IMAGE); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + drawThrowingMultipleEvent: function(x, y, width, height, name) { + this.g.setStart(); + this._drawCatchingEvent(x, y, width, height, null, null); + + var cx = x + width/2 - this.getStroke(); + var cy = y + height/2 - this.getStroke(); + + var w = width*.9; + var h = height*.9; + + var filled = true; + this._drawPentagon(cx, cy, w, h, filled); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "event"); + }, + + /* + * Draw flows: + * + * _connectFlowToActivity + * _drawFlow + * _drawDefaultSequenceFlowIndicator + * drawSequenceflow + * drawMessageflow + * drawAssociation + * _drawCircleTail + * _drawArrowHead + * _drawConditionalSequenceFlowIndicator + * drawSequenceflowWithoutArrow + */ + + _connectFlowToActivity: function(sourceActivityId, destinationActivityId, waypoints){ + var sourceActivity = this.g.getById(sourceActivityId); + var destinationActivity = this.g.getById(destinationActivityId); + if (sourceActivity == null || destinationActivity == null) { + if (sourceActivity == null) + console.error("source activity["+sourceActivityId+"] not found"); + else + console.error("destination activity["+destinationActivityId+"] not found"); + return null; + } + var bbSourceActivity = sourceActivity.getBBox() + var bbDestinationActivity = destinationActivity.getBBox() + + var path = []; + var newWaypoints = []; + for(var i = 0; i < waypoints.length; i++){ + var pathType = "" + if (i==0) + pathType = "M"; + else + pathType = "L"; + + path.push([pathType, waypoints[i].x, waypoints[i].y]); + newWaypoints.push({x:waypoints[i].x, y:waypoints[i].y}); + } + + var ninjaPathSourceActivity = this.ninjaPaper.path(sourceActivity.realPath); + var ninjaPathDestinationActivity = this.ninjaPaper.path(destinationActivity.realPath); + var ninjaBBSourceActivity = ninjaPathSourceActivity.getBBox(); + var ninjaBBDestinationActivity = ninjaPathDestinationActivity.getBBox(); + + // set target of the flow to the center of the taskObject + var newPath = path; + var originalSource = {x: newPath[0][1], y: newPath[0][2]}; + var originalTarget = {x: newPath[newPath.length-1][1], y: newPath[newPath.length-1][2]}; + newPath[0][1] = ninjaBBSourceActivity.x + (ninjaBBSourceActivity.x2 - ninjaBBSourceActivity.x ) / 2; + newPath[0][2] = ninjaBBSourceActivity.y + (ninjaBBSourceActivity.y2 - ninjaBBSourceActivity.y ) / 2; + newPath[newPath.length-1][1] = ninjaBBDestinationActivity.x + (ninjaBBDestinationActivity.x2 - ninjaBBDestinationActivity.x ) / 2; + newPath[newPath.length-1][2] = ninjaBBDestinationActivity.y + (ninjaBBDestinationActivity.y2 - ninjaBBDestinationActivity.y ) / 2; + + var ninjaPathFlowObject = this.ninjaPaper.path(newPath); + var ninjaBBFlowObject = ninjaPathFlowObject.getBBox(); + + var intersectionsSource = Raphael.pathIntersection(ninjaPathSourceActivity.realPath, ninjaPathFlowObject.realPath); + var intersectionsDestination = Raphael.pathIntersection(ninjaPathDestinationActivity.realPath, ninjaPathFlowObject.realPath); + var intersectionSource = intersectionsSource.pop(); + var intersectionDestination = intersectionsDestination.pop(); + + if (intersectionSource != undefined) { + if (this.gebug) { + var diameter = 5; + var dotOriginal = this.g.ellipse(originalSource.x, originalSource.y, diameter, diameter).attr({"fill": Color.white, "stroke": Color.Pink}); + var dot = this.g.ellipse(intersectionSource.x, intersectionSource.y, diameter, diameter).attr({"fill": Color.white, "stroke": Color.Green}); + } + + newWaypoints[0].x = intersectionSource.x; + newWaypoints[0].y = intersectionSource.y; + } + if (intersectionDestination != undefined) { + if (this.gebug) { + var diameter = 5; + var dotOriginal = this.g.ellipse(originalTarget.x, originalTarget.y, diameter, diameter).attr({"fill": Color.white, "stroke": Color.Red}); + var dot = this.g.ellipse(intersectionDestination.x, intersectionDestination.y, diameter, diameter).attr({"fill": Color.white, "stroke": Color.Blue}); + } + + newWaypoints[newWaypoints.length-1].x = intersectionDestination.x; + newWaypoints[newWaypoints.length-1].y = intersectionDestination.y; + } + + this.ninjaPaper.clear(); + return newWaypoints; + }, + + _drawFlow: function(waypoints, conditional, isDefault, highLighted, withArrowHead, connectionType){ + var originalPaint = this.getPaint(); + var originalStroke = this.getStroke(); + + this.setPaint(SEQUENCEFLOW_COLOR); + this.setStroke(SEQUENCEFLOW_STROKE); + + if (highLighted) { + this.setPaint(HIGHLIGHT_COLOR); + this.setStroke(SEQUENCEFLOW_HIGHLIGHT_STROKE); + } + +// TODO: generate polylineId or do something!! + var uuid = Raphael.createUUID(); + + var contextObject = this.getConextObject(); + var newWaypoints = waypoints; + if (contextObject) { + var newWaypoints = this._connectFlowToActivity(contextObject.sourceActivityId, contextObject.destinationActivityId, waypoints); + + if (!newWaypoints) { + console.error("Error draw flow from '"+contextObject.sourceActivityId+"' to '"+contextObject.destinationActivityId+"' "); + return; + } + } + var polyline = new Polyline(uuid, newWaypoints, this.getStroke()); + //var polyline = new Polyline(waypoints, 3); + + polyline.element = this.g.path(polyline.path); + polyline.element.attr("stroke-width", this.getStroke()); + polyline.element.attr("stroke", this.getPaint()); + + if (contextObject) { + polyline.element.id = contextObject.id; + polyline.element.data("contextObject", contextObject); + } else { + polyline.element.id = uuid; + } + + + /* + polyline.element.mouseover(function(){ + this.attr({"stroke-width": NORMAL_STROKE + 2}); + }).mouseout(function(){ + this.attr({"stroke-width": NORMAL_STROKE}); + }); + */ + + var last = polyline.getAnchorsCount()-1; + var x = polyline.getAnchor(last).x; + var y = polyline.getAnchor(last).y; + //var c = this.g.ellipse(x, y, 5, 5); + + var lastLineIndex = polyline.getLinesCount()-1; + var line = polyline.getLine(lastLineIndex); + var firstLine = polyline.getLine(0); + + var arrowHead = null, + circleTail = null, + defaultSequenceFlowIndicator = null, + conditionalSequenceFlowIndicator = null; + + if (connectionType == CONNECTION_TYPE.MESSAGE_FLOW) { + circleTail = this._drawCircleTail(firstLine, connectionType); + } + if(withArrowHead) + arrowHead = this._drawArrowHead(line, connectionType); + + //console.log("isDefault: ", isDefault, ", isDefaultConditionAvailable: ", polyline.isDefaultConditionAvailable); + if (isDefault && polyline.isDefaultConditionAvailable) { + //var angle = polyline.getLineAngle(0); + //console.log("firstLine", firstLine); + defaultSequenceFlowIndicator = this._drawDefaultSequenceFlowIndicator(firstLine); + } + + if (conditional) { + conditionalSequenceFlowIndicator = this._drawConditionalSequenceFlowIndicator(firstLine); + } + + // draw flow name + var flowName = contextObject.name; + if (flowName) { + var xPointArray = contextObject.xPointArray; + var yPointArray = contextObject.yPointArray; + var textX = xPointArray[0] < xPointArray[1] ? xPointArray[0] : xPointArray[1]; + var textY = yPointArray[0] < yPointArray[1] ? yPointArray[1] : yPointArray[0]; + // fix xy + textX += 20; + textY -= 10; + this.g.text(textX, textY, flowName).attr(LABEL_FONT); + } + + var st = this.g.set(); + st.push(polyline.element, arrowHead, circleTail, conditionalSequenceFlowIndicator); + polyline.element.data("set", st); + polyline.element.data("withArrowHead", withArrowHead); + + var polyCloneAttrNormal = {"stroke-width": this.getStroke() + 5, stroke: Color.get(132,112,255), opacity: 0.0, cursor: "hand"}; + var polyClone = st.clone().attr(polyCloneAttrNormal).hover(function () { + //if (polyLine.data("isSelected")) return; + polyClone.attr({opacity: 0.2}); + }, function () { + //if (polyLine.data("isSelected")) return; + polyClone.attr({opacity: 0.0}); + }); + polyClone.data("objectId", polyline.element.id); + polyClone.click(function(){ + var instance = this; + var objectId = instance.data("objectId"); + var object = this.paper.getById(objectId); + var contextObject = object.data("contextObject"); + if (contextObject) { + console.log("[flow], objectId: " + object.id +", flow: " + contextObject.flow); + ProcessDiagramGenerator.showFlowInfo(contextObject); + } + }).dblclick(function(){ + console.log("!!! DOUBLE CLICK !!!"); + }).hover(function (mouseEvent) { + var instance = this; + var objectId = instance.data("objectId"); + var object = this.paper.getById(objectId); + var contextObject = object.data("contextObject"); + if (contextObject) + ProcessDiagramGenerator.showFlowInfo(contextObject); + }); + polyClone.data("parentId", uuid); + + if (!connectionType || connectionType == CONNECTION_TYPE.SEQUENCE_FLOW) + polyline.element.attr("stroke-width", this.getStroke()); + else if (connectionType == CONNECTION_TYPE.MESSAGE_FLOW) + polyline.element.attr({"stroke-dasharray": "--"}); + else if (connectionType == CONNECTION_TYPE.ASSOCIATION) + polyline.element.attr({"stroke-dasharray": ". "}); + + this.setPaint(originalPaint); + this.setStroke(originalStroke); + }, + + _drawDefaultSequenceFlowIndicator: function(line) { + //console.log("line: ", line); + + var len = 10; c = len/2, f = 8; + var defaultIndicator = this.g.path("M" + (-c) + " " + 0 + "L" + (c) + " " + 0); + defaultIndicator.attr("stroke-width", this.getStroke()+0); + defaultIndicator.attr("stroke", this.getPaint()); + + + var cosAngle = Math.cos((line.angle)); + var sinAngle = Math.sin((line.angle)); + + var dx = f * cosAngle; + var dy = f * sinAngle; + + var x1 = line.x1 + dx + 0*c*cosAngle; + var y1 = line.y1 + dy + 0*c*sinAngle; + + defaultIndicator.transform("t" + (x1) + "," + (y1) + ""); + defaultIndicator.transform("...r" + Raphael.deg(line.angle - 3*Math.PI / 4) + " " + 0 + " " + 0); + /* + var c0 = this.g.ellipse(0, 0, 1, 1).attr({stroke: Color.Blue}); + c0.transform("t" + (line.x1) + "," + (line.y1) + ""); + var center = this.g.ellipse(0, 0, 1, 1).attr({stroke: Color.Red}); + center.transform("t" + (line.x1+dx) + "," + (line.y1+dy) + ""); + */ + + return defaultIndicator; + }, + + drawSequenceflow: function(waypoints, conditional, isDefault, highLighted) { + var withArrowHead = true; + this._drawFlow(waypoints, conditional, isDefault, highLighted, withArrowHead, CONNECTION_TYPE.SEQUENCE_FLOW); + }, + + drawMessageflow: function(waypoints, highLighted) { + var withArrowHead = true; + var conditional=isDefault=false; + this._drawFlow(waypoints, conditional, isDefault, highLighted, withArrowHead, CONNECTION_TYPE.MESSAGE_FLOW); + }, + + drawAssociation: function(waypoints, withArrowHead, highLighted) { + var withArrowHead = withArrowHead; + var conditional=isDefault=false; + this._drawFlow(waypoints, conditional, isDefault, highLighted, withArrowHead, CONNECTION_TYPE.ASSOCIATION); + }, + + _drawCircleTail: function(line, connectionType){ + var diameter = ARROW_WIDTH/2*1.5; + + // anti smoothing + if (this.strokeWidth%2 == 1) + line.x1 += .5, line.y1 += .5; + + var circleTail = this.g.ellipse(line.x1, line.y1, diameter, diameter); + circleTail.attr("fill", Color.white); + circleTail.attr("stroke", this.getPaint()); + + return circleTail; + }, + + _drawArrowHead: function(line, connectionType){ + var doubleArrowWidth = 2 * ARROW_WIDTH; + + if (connectionType == CONNECTION_TYPE.ASSOCIATION) + var arrowHead = this.g.path("M-" + (ARROW_WIDTH/2+.5) + " -" + doubleArrowWidth + "L 0 0 L" + (ARROW_WIDTH/2+.5) + " -" + doubleArrowWidth); + else + var arrowHead = this.g.path("M0 0L-" + (ARROW_WIDTH/2+.5) + " -" + doubleArrowWidth + "L" + (ARROW_WIDTH/2+.5) + " -" + doubleArrowWidth + "z"); + + //arrowHead.transform("t" + 0 + ",-" + this.getStroke() + ""); + + // anti smoothing + if (this.strokeWidth%2 == 1) + line.x2 += .5, line.y2 += .5; + + arrowHead.transform("t" + line.x2 + "," + line.y2 + ""); + arrowHead.transform("...r" + Raphael.deg(line.angle - Math.PI / 2) + " " + 0 + " " + 0); + + if (!connectionType || connectionType == CONNECTION_TYPE.SEQUENCE_FLOW) + arrowHead.attr("fill", this.getPaint()); + else if (connectionType == CONNECTION_TYPE.MESSAGE_FLOW) + arrowHead.attr("fill", Color.white); + + arrowHead.attr("stroke-width", this.getStroke()); + arrowHead.attr("stroke", this.getPaint()); + + return arrowHead; + }, + + /* + drawArrowHead2: function(srcX, srcY, targetX, targetY) { + var doubleArrowWidth = 2 * ARROW_WIDTH; + + //var arrowHead = this.g.path("M-" + ARROW_WIDTH/2 + " -" + doubleArrowWidth + "L0 0" + "L" + ARROW_WIDTH/2 + " -" + doubleArrowWidth + "z"); + + var arrowHead = this.g.path("M0 0L-" + ARROW_WIDTH/1.5 + " -" + doubleArrowWidth + "L" + ARROW_WIDTH/1.5 + " -" + doubleArrowWidth + "z"); + //var c = DefaultProcessDiagramCanvas.g.ellipse(0, 0, 3, 3); + //c.transform("t"+targetX+","+targetY+""); + + var angle = Math.atan2(targetY - srcY, targetX - srcX); + + arrowHead.transform("t"+targetX+","+targetY+""); + arrowHead.transform("...r" + Raphael.deg(angle - Math.PI / 2) + " "+0+" "+0); + + //console.log(arrowHead.transform()); + //console.log("--> " + Raphael.deg(angle - Math.PI / 2)); + + arrowHead.attr("fill", this.getPaint()); + arrowHead.attr("stroke", this.getPaint()); + + / * + // shaddow + var c0 = arrowHead.clone(); + c0.transform("...t-1 1"); + c0.attr("stroke-width", this.strokeWidth); + c0.attr("stroke", Color.black); + c0.attr("opacity", 0.15); + c0.toBack(); + * / + }, + */ + + _drawConditionalSequenceFlowIndicator: function(line){ + var horizontal = (CONDITIONAL_INDICATOR_WIDTH * 0.7); + var halfOfHorizontal = horizontal / 2; + var halfOfVertical = CONDITIONAL_INDICATOR_WIDTH / 2; + + var uuid = null; + var waypoints = [{x: 0, y: 0}, + {x: -halfOfHorizontal, y: halfOfVertical}, + {x: 0, y: CONDITIONAL_INDICATOR_WIDTH}, + {x: halfOfHorizontal, y: halfOfVertical}]; + /* + var polyline = new Polyline(uuid, waypoints, this.getStroke()); + polyline.element = this.g.path(polyline.path); + polyline.element.attr("stroke-width", this.getStroke()); + polyline.element.attr("stroke", this.getPaint()); + polyline.element.id = uuid; + */ + var polygone = new Polygone(waypoints, this.getStroke()); + polygone.element = this.g.path(polygone.path); + polygone.element.attr("fill", Color.white); + + polygone.transform("t" + line.x1 + "," + line.y1 + ""); + polygone.transform("...r" + Raphael.deg(line.angle - Math.PI / 2) + " " + 0 + " " + 0); + + + var cosAngle = Math.cos((line.angle)); + var sinAngle = Math.sin((line.angle)); + + //polygone.element.attr("stroke-width", this.getStroke()); + //polygone.element.attr("stroke", this.getPaint()); + + polygone.attr({"stroke-width": this.getStroke(), "stroke": this.getPaint()}); + + return polygone.element; + }, + + drawSequenceflowWithoutArrow: function(waypoints, conditional, isDefault, highLighted) { + var withArrowHead = false; + this._drawFlow(waypoints, conditional, isDefault, highLighted, withArrowHead, CONNECTION_TYPE.SEQUENCE_FLOW); + }, + + /* + * Draw artifacts + */ + + drawPoolOrLane: function(x, y, width, height, name){ + // anti smoothing + if (this.strokeWidth%2 == 1) + x = Math.round(x) + .5, y = Math.round(y) + .5; + + // shape + var rect = this.g.rect(x, y, width, height); + var attr = {"stroke-width": NORMAL_STROKE, stroke: TASK_STROKE_COLOR}; + rect.attr(attr); + + // Add the name as text, vertical + if(name != null && name.length > 0) { + var attr = POOL_LANE_FONT; + + // Include some padding + var availableTextSpace = height - 6; + + // Create rotation for derived font + var truncated = this.fitTextToWidth(name, availableTextSpace); + var realWidth = this.getStringWidth(truncated, attr); + var realHeight = this.getStringHeight(truncated, attr); + + //console.log("truncated:", truncated, ", height:", height, ", realHeight:", realHeight, ", availableTextSpace:", availableTextSpace, ", realWidth:", realWidth); + var newX = x + 2 + realHeight*1 - realHeight/2; + var newY = 3 + y + availableTextSpace - (availableTextSpace - realWidth) / 2 - realWidth/2; + var textElement = this.g.text(newX, newY, truncated).attr(attr); + //console.log(".getBBox(): ", t.getBBox()); + textElement.transform("r" + Raphael.deg(270 * Math.PI/180) + " " + newX + " " + newY); + } + + // TODO: add to set + }, + + _drawTask: function(name, x, y, width, height, thickBorder) { + var originalPaint = this.getPaint(); + this.setPaint(TASK_COLOR); + + // anti smoothing + if (this.strokeWidth%2 == 1) + x = Math.round(x) + .5, y = Math.round(y) + .5; + + // shape + var shape = this.g.rect(x, y, width, height, TASK_CORNER_ROUND); + var attr = {"stroke-width": this.strokeWidth, stroke: TASK_STROKE_COLOR, fill: this.getPaint()}; + shape.attr(attr); + //shape.attr({fill: "90-"+this.getPaint()+"-" + Color.get(250, 250, 244)}); + + var contextObject = this.getConextObject(); + if (contextObject) { + shape.id = contextObject.id; + shape.data("contextObject", contextObject); + } + + //var activity = this.getConextObject(); + //console.log("activity: " + activity.getId(), activity); + //Object.clone(activity); + + /* + c.mouseover(function(){ + this.attr({"stroke-width": NORMAL_STROKE + 2}); + }).mouseout(function(){ + this.attr({"stroke-width": NORMAL_STROKE}); + }); + */ + + this.setPaint(originalPaint); + + // white shaddow + this.drawShaddow(shape); + + + if (thickBorder) { + shape.attr({"stroke-width": THICK_TASK_BORDER_STROKE}); + } else { + //g.draw(rect); + } + + // text + if (name) { + var fontAttr = TASK_FONT; + + // Include some padding + var paddingX = 5; + var paddingY = 5; + var availableTextSpace = width - paddingX*2; + + // TODO: this.setFont + // var originalFont = this.getFont(); + // this.setFont(TASK_FONT) + /* + var truncated = this.fitTextToWidth(name, availableTextSpace); + var realWidth = this.getStringWidth(truncated, fontAttr); + var realHeight = this.getStringHeight(truncated, fontAttr); + + //var t = this.g.text(x + width/2 + realWidth*0/2 + paddingX*0, y + height/2, truncated).attr(fontAttr); + */ + //console.log("draw task name: " + name); + var boxWidth = width - (2 * TEXT_PADDING); + var boxHeight = height - ICON_SIZE - ICON_PADDING - ICON_PADDING - MARKER_WIDTH - 2 - 2; + var boxX = x + width/2 - boxWidth/2; + var boxY = y + height/2 - boxHeight/2 + ICON_PADDING + ICON_PADDING - 2 - 2; + /* + var boxWidth = width - (2 * ANNOTATION_TEXT_PADDING); + var boxHeight = height - (2 * ANNOTATION_TEXT_PADDING); + var boxX = x + width/2 - boxWidth/2; + var boxY = y + height/2 - boxHeight/2; + */ + + this.drawTaskLabel(name, boxX, boxY, boxWidth, boxHeight); + } + }, + + drawTaskLabel: function(text, x, y, boxWidth, boxHeight){ + var originalFont = this.getFont(); + this.setFont(TASK_FONT); + + this._drawMultilineText(text, x, y, boxWidth, boxHeight, MULTILINE_VERTICAL_ALIGN_MIDDLE, MULTILINE_HORIZONTAL_ALIGN_MIDDLE); + + this.setFont(originalFont); + }, + + drawAnnotationText: function(text, x, y, width, height){ + //this._drawMultilineText(text, x, y, width, height, "start"); + + var originalPaint = this.getPaint(); + var originalFont = this.getFont(); + + this.setPaint(Color.black); + this.setFont(TASK_FONT); + + this._drawMultilineText(text, x, y, width, height, MULTILINE_VERTICAL_ALIGN_TOP, MULTILINE_HORIZONTAL_ALIGN_LEFT); + + this.setPaint(originalPaint); + this.setFont(originalFont); + }, + + drawLabel: function(text, x, y, width, height){ + //this._drawMultilineText(text, x, y, width, height, "start"); + + var originalPaint = this.getPaint(); + var originalFont = this.getFont(); + + this.setPaint(LABEL_COLOR); + //this.setFont(LABEL_FONT); + this.setFont(LABEL_FONT_SMOOTH); + + // predefined box width for labels + // TODO: use label width as is, but not height (for stretching) + if (!width || !height) { + width = 100; + height = 0; + } + + // TODO: remove it. It is debug + x = x - width/2; + + this._drawMultilineText(text, x, y, width, height, MULTILINE_VERTICAL_ALIGN_TOP, MULTILINE_HORIZONTAL_ALIGN_MIDDLE); + + this.setPaint(originalPaint); + this.setFont(originalFont); + }, + + /* + drawMultilineLabel: function(text, x, y){ + var originalFont = this.getFont(); + this.setFont(LABEL_FONT_SMOOTH); + + var boxWidth = 80; + x = x - boxWidth/2 + + this._drawMultilineText(text, x, y, boxWidth, null, "middle"); + this.setFont(originalFont); + }, + */ + + getStringWidth: function(text, fontAttrs){ + var textElement = this.g.text(0, 0, text).attr(fontAttrs).hide(); + var bb = textElement.getBBox(); + + //console.log("string width: ", t.getBBox().width); + return textElement.getBBox().width; + }, + getStringHeight: function(text, fontAttrs){ + var textElement = this.g.text(0, 0, text).attr(fontAttrs).hide(); + var bb = textElement.getBBox(); + + //console.log("string height: ", t.getBBox().height); + return textElement.getBBox().height; + }, + fitTextToWidth: function(original, width) { + var text = original; + + // TODO: move attr on parameters + var attr = {font: "11px Arial", opacity: 0}; + + // remove length for "..." + var dots = this.g.text(0, 0, "...").attr(attr).hide(); + var dotsBB = dots.getBBox(); + + var maxWidth = width - dotsBB.width; + + var textElement = this.g.text(0, 0, text).attr(attr).hide(); + var bb = textElement.getBBox(); + + // it's a little bit incorrect with "..." + while (bb.width > maxWidth && text.length > 0) { + text = text.substring(0, text.length - 1); + textElement.attr({"text": text}); + bb = textElement.getBBox(); + } + + // remove element from paper + textElement.remove(); + + if (text != original) { + text = text + "..."; + } + + return text; + }, + wrapTextToWidth: function(original, width){ + + //return original; + + var text = original; + var wrappedText = "\n"; + + // TODO: move attr on parameters + var attr = {font: "11px Arial", opacity: 0}; + + var textElement = this.g.text(0, 0, wrappedText).attr(attr).hide(); + var bb = textElement.getBBox(); + + var resultText = ""; + var i = 0, j = 0; + while (text.length > 0) { + while (bb.width < width && text.length>0) { + // remove "\n" + wrappedText = wrappedText.substring(0,wrappedText.length-1); + // add new char, add "\n" + wrappedText = wrappedText + text.substring(0,1) + "\n"; + text = text.substring(1); + + textElement.attr({"text": wrappedText}); + bb = textElement.getBBox(); + i++; + if (i>200) break; + } + // remove "\n" + wrappedText = wrappedText.substring(0, wrappedText.length - 1); + + if (text.length == 0) { + resultText += wrappedText; + break; + } + + // return last char to text + text = wrappedText.substring(wrappedText.length-1) + text; + // remove last char from wrappedText + wrappedText = wrappedText.substring(0, wrappedText.length-1) + "\n"; + + textElement.attr({"text": wrappedText}); + bb = textElement.getBBox(); + + //console.log(">> ", wrappedText, ", ", text); + resultText += wrappedText; + wrappedText = "\n"; + + j++; + if (j>20) break; + } + // remove element from paper + textElement.remove(); + + return resultText; + }, + + wrapTextToWidth2: function(original, width){ + var text = original; + var wrappedText = "\n"; + + // TODO: move attr on parameters + var attr = {font: "11px Arial", opacity: 0}; + + var textElement = this.g.text(0, 0, wrappedText).attr(attr).hide(); + var bb = textElement.getBBox(); + + var resultText = ""; + var i = 0, j = 0; + while (text.length > 0) { + while (bb.width < width && text.length>0) { + // remove "\n" + wrappedText = wrappedText.substring(0,wrappedText.length-1); + // add new char, add "\n" + wrappedText = wrappedText + text.substring(0,1) + "\n"; + text = text.substring(1); + + textElement.attr({"text": wrappedText}); + bb = textElement.getBBox(); + i++; + if (i>200) break; + } + // remove "\n" + wrappedText = wrappedText.substring(0, wrappedText.length - 1); + + if (text.length == 0) { + resultText += wrappedText; + break; + } + + // return last char to text + text = wrappedText.substring(wrappedText.length-1) + text; + // remove last char from wrappedText + wrappedText = wrappedText.substring(0, wrappedText.length-1) + "\n"; + + textElement.attr({"text": wrappedText}); + bb = textElement.getBBox(); + + //console.log(">> ", wrappedText, ", ", text); + resultText += wrappedText; + wrappedText = "\n"; + + j++; + if (j>20) break; + } + // remove element from paper + textElement.remove(); + + return resultText; + }, + + drawUserTask: function(name, x, y, width, height) { + this.g.setStart(); + this._drawTask(name, x, y, width, height); + var img = this.g.image(USERTASK_IMAGE, x + ICON_PADDING, y + ICON_PADDING, ICON_SIZE, ICON_SIZE); + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "task"); + }, + + drawScriptTask: function(name, x, y, width, height) { + this.g.setStart(); + this._drawTask(name, x, y, width, height); + var img = this.g.image(SCRIPTTASK_IMAGE, x + ICON_PADDING, y + ICON_PADDING, ICON_SIZE, ICON_SIZE); + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "task"); + }, + + drawServiceTask: function(name, x, y, width, height) { + this.g.setStart(); + this._drawTask(name, x, y, width, height); + var img = this.g.image(SERVICETASK_IMAGE, x + ICON_PADDING, y + ICON_PADDING, ICON_SIZE, ICON_SIZE); + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "task"); + }, + + drawReceiveTask: function(name, x, y, width, height) { + this.g.setStart(); + this._drawTask(name, x, y, width, height); + var img = this.g.image(RECEIVETASK_IMAGE, x + 7, y + 7, ICON_SIZE, ICON_SIZE); + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "task"); + }, + + drawSendTask: function(name, x, y, width, height) { + this.g.setStart(); + this._drawTask(name, x, y, width, height); + var img = this.g.image(SENDTASK_IMAGE, x + 7, y + 7, ICON_SIZE, ICON_SIZE); + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "task"); + }, + + drawManualTask: function(name, x, y, width, height) { + this.g.setStart(); + this._drawTask(name, x, y, width, height); + var img = this.g.image(MANUALTASK_IMAGE, x + 7, y + 7, ICON_SIZE, ICON_SIZE); + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "task"); + }, + + drawBusinessRuleTask: function(name, x, y, width, height) { + this.g.setStart(); + this._drawTask(name, x, y, width, height); + var img = this.g.image(BUSINESS_RULE_TASK_IMAGE, x + 7, y + 7, ICON_SIZE, ICON_SIZE); + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "task"); + }, + + drawExpandedSubProcess: function(name, x, y, width, height, isTriggeredByEvent){ + this.g.setStart(); + // anti smoothing + if (this.strokeWidth%2 == 1) + x = Math.round(x) + .5, y = Math.round(y) + .5; + + // shape + var rect = this.g.rect(x, y, width, height, EXPANDED_SUBPROCESS_CORNER_ROUND); + + // Use different stroke (dashed) + if(isTriggeredByEvent) { + rect.attr(EVENT_SUBPROCESS_ATTRS); + } else { + rect.attr(EXPANDED_SUBPROCESS_ATTRS); + } + + this.setContextToElement(rect); + + var fontAttr = EXPANDED_SUBPROCESS_FONT; + + // Include some padding + var paddingX = 10; + var paddingY = 5; + var availableTextSpace = width - paddingX*2; + + var truncated = this.fitTextToWidth(name, availableTextSpace); + var realWidth = this.getStringWidth(truncated, fontAttr); + var realHeight = this.getStringHeight(truncated, fontAttr); + + var textElement = this.g.text(x + width/2 - realWidth*0/2 + 0*paddingX, y + realHeight/2 + paddingY, truncated).attr(fontAttr); + + var set = this.g.setFinish(); + // TODO: Expanded Sub Process may has specific handlers + //this.addHandlers(set, x, y, width, height, "task"); + }, + + drawCollapsedSubProcess: function(name, x, y, width, height, isTriggeredByEvent) { + this.g.setStart(); + this._drawCollapsedTask(name, x, y, width, height, false); + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "task"); + }, + + drawCollapsedCallActivity: function(name, x, y, width, height) { + this.g.setStart(); + this._drawCollapsedTask(name, x, y, width, height, true); + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "task"); + }, + + _drawCollapsedTask: function(name, x, y, width, height, thickBorder) { + // The collapsed marker is now visualized separately + this._drawTask(name, x, y, width, height, thickBorder); + }, + + drawCollapsedMarker: function(x, y, width, height){ + // rectangle + var rectangleWidth = MARKER_WIDTH; + var rectangleHeight = MARKER_WIDTH; + + // anti smoothing + if (this.strokeWidth%2 == 1) + y += .5; + + var rect = this.g.rect(x + (width - rectangleWidth) / 2, y + height - rectangleHeight - 3, rectangleWidth, rectangleHeight); + + // plus inside rectangle + var cx = rect.attr("x") + rect.attr("width")/2; + var cy = rect.attr("y") + rect.attr("height")/2; + + var line = this.g.path( + "M" + cx + " " + (cy+2) + "L" + cx + " " + (cy-2) + + "M" + (cx-2) + " " + cy + "L" + (cx+2) + " " + cy + ).attr({"stroke-width": this.strokeWidth}); + + }, + + drawActivityMarkers: function(x, y, width, height, multiInstanceSequential, multiInstanceParallel, collapsed){ + if (collapsed) { + if (!multiInstanceSequential && !multiInstanceParallel) { + this.drawCollapsedMarker(x, y, width, height); + } else { + this.drawCollapsedMarker(x - MARKER_WIDTH / 2 - 2, y, width, height); + if (multiInstanceSequential) { + console.log("is collapsed and multiInstanceSequential"); + this.drawMultiInstanceMarker(true, x + MARKER_WIDTH / 2 + 2, y, width, height); + } else if (multiInstanceParallel) { + console.log("is collapsed and multiInstanceParallel"); + this.drawMultiInstanceMarker(false, x + MARKER_WIDTH / 2 + 2, y, width, height); + } + } + } else { + if (multiInstanceSequential) { + console.log("is multiInstanceSequential"); + this.drawMultiInstanceMarker(true, x, y, width, height); + } else if (multiInstanceParallel) { + console.log("is multiInstanceParallel"); + this.drawMultiInstanceMarker(false, x, y, width, height); + } + } + }, + + drawGateway: function(x, y, width, height) { + + var rhombus = this.g.path( "M" + x + " " + (y + (height / 2)) + + "L" + (x + (width / 2)) + " " + (y + height) + + "L" + (x + width) + " " + (y + (height / 2)) + + "L" + (x + (width / 2)) + " " + y + + "z" + ); + + // white shaddow + this.drawShaddow(rhombus); + + rhombus.attr("stroke-width", this.strokeWidth); + rhombus.attr("stroke", Color.SlateGrey); + rhombus.attr({fill: Color.white}); + + this.setContextToElement(rhombus); + + return rhombus; + }, + + drawParallelGateway: function(x, y, width, height) { + this.g.setStart(); + + // rhombus + this.drawGateway(x, y, width, height); + + // plus inside rhombus + var originalStroke = this.getStroke(); + this.setStroke(GATEWAY_TYPE_STROKE); + + var plus = this.g.path( + "M" + (x + 10) + " " + (y + height / 2) + "L" + (x + width - 10) + " " + (y + height / 2) + // horizontal + "M" + (x + width / 2) + " " + (y + height - 10) + "L" + (x + width / 2) + " " + (y + 10) // vertical + ); + plus.attr({"stroke-width": this.getStroke(), "stroke": this.getPaint()}); + + this.setStroke(originalStroke); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "gateway"); + }, + + drawExclusiveGateway: function(x, y, width, height) { + this.g.setStart(); + + // rhombus + var rhombus = this.drawGateway(x, y, width, height); + + var quarterWidth = width / 4; + var quarterHeight = height / 4; + + // X inside rhombus + var originalStroke = this.getStroke(); + this.setStroke(GATEWAY_TYPE_STROKE); + + var iks = this.g.path( + "M" + (x + quarterWidth + 3) + " " + (y + quarterHeight + 3) + "L" + (x + 3 * quarterWidth - 3) + " " + (y + 3 * quarterHeight - 3) + + "M" + (x + quarterWidth + 3) + " " + (y + 3 * quarterHeight - 3) + "L" + (x + 3 * quarterWidth - 3) + " " + (y + quarterHeight + 3) + ); + iks.attr({"stroke-width": this.getStroke(), "stroke": this.getPaint()}); + + this.setStroke(originalStroke); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "gateway"); + }, + + drawInclusiveGateway: function(x, y, width, height){ + this.g.setStart(); + + // rhombus + this.drawGateway(x, y, width, height); + + var diameter = width / 4; + + // circle inside rhombus + var originalStroke = this.getStroke(); + this.setStroke(GATEWAY_TYPE_STROKE); + var circle = this.g.ellipse(width/2 + x, height/2 + y, diameter, diameter); + circle.attr({"stroke-width": this.getStroke(), "stroke": this.getPaint()}); + + this.setStroke(originalStroke); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "gateway"); + }, + + drawEventBasedGateway: function(x, y, width, height){ + this.g.setStart(); + + // rhombus + this.drawGateway(x, y, width, height); + + var diameter = width / 2; + + // rombus inside rhombus + var originalStroke = this.getStroke(); + this.setStroke(GATEWAY_TYPE_STROKE); + + + // draw GeneralPath (polygon) + var n=5; + var angle = 2*Math.PI/n; + var x1Points = []; + var y1Points = []; + + for ( var index = 0; index < n; index++ ) { + var v = index*angle - Math.PI/2; + x1Points[index] = x + parseInt(Math.round(width/2)) + parseInt(Math.round((width/4)*Math.cos(v))); + y1Points[index] = y + parseInt(Math.round(height/2)) + parseInt(Math.round((height/4)*Math.sin(v))); + } + //g.drawPolygon(x1Points, y1Points, n); + + var path = ""; + for ( var index = 0; index < n; index++ ) { + if (index == 0) + path += "M"; + else + path += "L"; + path += x1Points[index] + "," + y1Points[index]; + } + path += "z"; + var polygone = this.g.path(path); + polygone.attr("stroke-width", this.strokeWidth); + polygone.attr("stroke", this.getPaint()); + + this.setStroke(originalStroke); + + var set = this.g.setFinish(); + this.addHandlers(set, x, y, width, height, "gateway"); + }, + + /* + * drawMultiInstanceMarker + * drawHighLight + * highLightFlow + */ + + drawMultiInstanceMarker: function(sequential, x, y, width, height) { + var rectangleWidth = MARKER_WIDTH; + var rectangleHeight = MARKER_WIDTH; + + // anti smoothing + if (this.strokeWidth%2 == 1) + x += .5;//, y += .5; + + var lineX = x + (width - rectangleWidth) / 2; + var lineY = y + height - rectangleHeight - 3; + + var originalStroke = this.getStroke(); + this.setStroke(MULTI_INSTANCE_STROKE); + + if (sequential) { + var line = this.g.path( + "M" + lineX + " " + lineY + "L" + (lineX + rectangleWidth) + " " + lineY + + "M" + lineX + " " + (lineY + rectangleHeight / 2) + "L" + (lineX + rectangleWidth) + " " + (lineY + rectangleHeight / 2) + + "M" + lineX + " " + (lineY + rectangleHeight) + "L" + (lineX + rectangleWidth) + " " + (lineY + rectangleHeight) + ).attr({"stroke-width": this.strokeWidth}); + } else { + var line = this.g.path( + "M" + lineX + " " + lineY + "L" + lineX + " " + (lineY + rectangleHeight) + + "M" + (lineX + rectangleWidth / 2) + " " + lineY + "L" + (lineX + rectangleWidth / 2) + " " + (lineY + rectangleHeight) + + "M" + (lineX + rectangleWidth) + " " + lineY + "L" + (lineX + rectangleWidth) + " " + (lineY + rectangleHeight) + ).attr({"stroke-width": this.strokeWidth}); + } + + this.setStroke(originalStroke); + }, + + drawHighLight: function(x, y, width, height){ + var originalPaint = this.getPaint(); + var originalStroke = this.getStroke(); + + this.setPaint(HIGHLIGHT_COLOR); + this.setStroke(THICK_TASK_BORDER_STROKE); + + //var c = this.g.rect(x - width/2 - THICK_TASK_BORDER_STROKE, y - height/2 - THICK_TASK_BORDER_STROKE, width + THICK_TASK_BORDER_STROKE*2, height + THICK_TASK_BORDER_STROKE*2, 5); + var rect = this.g.rect(x - THICK_TASK_BORDER_STROKE, y - THICK_TASK_BORDER_STROKE, width + THICK_TASK_BORDER_STROKE*2, height + THICK_TASK_BORDER_STROKE*2, TASK_CORNER_ROUND); + rect.attr("stroke-width", this.strokeWidth); + rect.attr("stroke", this.getPaint()); + + this.setPaint(originalPaint); + this.setStroke(originalStroke); + }, + + highLightActivity: function(activityId){ + var shape = this.g.getById(activityId); + if (!shape) { + console.error("Activity " + activityId + " not found"); + return; + } + + var contextObject = shape.data("contextObject"); + if (contextObject) + console.log("--> highLightActivity: ["+contextObject.getProperty("type")+"], activityId: " + contextObject.getId()); + else + console.log("--> highLightActivity: ", shape, shape.data("contextObject")); + + shape.attr("stroke-width", THICK_TASK_BORDER_STROKE); + shape.attr("stroke", HIGHLIGHT_COLOR); + }, + + highLightFlow: function(flowId){ + var shapeFlow = this.g.getById(flowId); + if (!shapeFlow) { + console.error("Flow " + flowId + " not found"); + return; + } + + var contextObject = shapeFlow.data("contextObject"); + if (contextObject) + console.log("--> highLightFlow: ["+contextObject.id+"] " + contextObject.flow); + //console.log("--> highLightFlow: ", flow.flow, flow.data("set")); + + var st = shapeFlow.data("set"); + + st.attr("stroke-width", SEQUENCEFLOW_HIGHLIGHT_STROKE); + st.attr("stroke", HIGHLIGHT_COLOR); + var withArrowHead = shapeFlow.data("withArrowHead"); + if (withArrowHead) + st[1].attr("fill", HIGHLIGHT_COLOR); + + st.forEach(function(el){ + //console.log("---->", el); + //el.attr("") + }); + }, + + + _drawClock: function(cx, cy, width, height){ + + var circle = this.g.ellipse(cx, cy, 1, 1).attr({stroke:"none", fill: Color.get(232, 239, 241)}); + //var c = this.g.ellipse(cx, cy, width, height).attr({stroke:"none", fill: Color.red}); + //x = cx - width/2; + //y = cy - height/2; + + var clock = this.g.path( + /* outer circle */ "M15.5,2.374 C8.251,2.375,2.376,8.251,2.374,15.5 C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374z" + + /* inner circle */ "M15.5,26.623 C8.909,26.615,4.385,22.09,4.375,15.5 C4.385,8.909,8.909,4.384,15.5,4.374c4.59,0.01,11.115,3.535,11.124,11.125C26.615,22.09,22.091,26.615,15.5,26.623z" + + /* 9 */ "M8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5z" + + /* 8 */ "M8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572z" + + /* 10 */ "M9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696z" + + /* 2 */ "M22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428z" + + /* 7 */ "M12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455z" + + /* 11 */ "M12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545z" + + /* 4 */ "M22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572z" + + /* 2 */ "M19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813z" + + /* 3 */ "M23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5z" + + /* arrows */ "M15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624z" + + /* 9 */ "M15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377z" + + /* 8 */ "M18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z" + + ""); + clock.attr({fill: Color.black, stroke: "none"}); + //clock.transform("t " + (cx-29.75/2) + " " + (cy-29.75/2)); + //clock.transform("...s 0.85"); + + //clock.transform("...s " + .85 + " " + .85); + clock.transform("t " + (-2.374) + " " + (-2.374) ); + clock.transform("...t -" + (15.5-2.374) + " -" + (15.5-2.374) ); + clock.transform("...s " + 1*(width/35) + " " + 1*(height/35)); + clock.transform("...T " + cx + " " + cy); + //clock.transform("t " + (cx-width/2) + " " + (cy-height/2)); + + //console.log(".getBBox(): ", clock.getBBox()); + //console.log(".attr(): ", c.attrs); + circle.attr("rx", clock.getBBox().width/2); + circle.attr("ry", clock.getBBox().height/2); + + //return circle + }, + + _drawPentagon: function(cx, cy, width, height, filled){ + // draw GeneralPath (polygon) + var n=5; + var angle = 2*Math.PI/n; + var waypoints = []; + + for ( var index = 0; index < n; index++ ) { + var v = index*angle - Math.PI/2; + var point = {}; + point.x = -width*1.2/2 + parseInt(Math.round(width*1.2/2)) + parseInt(Math.round((width*1.2/4)*Math.cos(v))); + point.y = -height*1.2/2 + parseInt(Math.round(height*1.2/2)) + parseInt(Math.round((height*1.2/4)*Math.sin(v))); + waypoints[index] = point; + } + + var polygone = new Polygone(waypoints, this.getStroke()); + polygone.element = this.g.path(polygone.path); + if (filled) + polygone.element.attr("fill", Color.black); + else + polygone.element.attr("fill", Color.white); + + polygone.element.transform("s " + 1*(width/35) + " " + 1*(height/35)); + polygone.element.transform("...T " + cx + " " + cy); + }, + + //_drawMultilineText: function(text, x, y, boxWidth, boxHeight, textAnchor) { + _drawMultilineText: function(text, x, y, boxWidth, boxHeight, verticalAlign, horizontalAlign) { + if (!text || text == "") + return; + + // Autostretch boxHeight if boxHeight is 0 + if (boxHeight == 0) + verticalAlign = MULTILINE_VERTICAL_ALIGN_TOP; + + //var TEXT_PADDING = 3; + var width = boxWidth; + if (boxHeight) + var height = boxHeight; + + var layouts = []; + + //var font = {font: "11px Arial", opacity: 1, "fill": LABEL_COLOR}; + var font = this.getFont(); + var measurer = new LineBreakMeasurer(this.g, x, y, text, font); + var lineHeight = measurer.rafaelTextObject.getBBox().height; + //console.log("text: ", text.replace(/\n/g, "?")); + + if (height) { + var availableLinesCount = parseInt(height/lineHeight); + //console.log("availableLinesCount: " + availableLinesCount); + } + + var i = 1; + while (measurer.getPosition() < measurer.text.getEndIndex()) { + var layout = measurer.nextLayout(width); + //console.log("LAYOUT: " + layout + ", getPosition: " + measurer.getPosition()); + + if (layout != null) { + // TODO: and check if measurer has next layout. If no then don't draw dots + if (!availableLinesCount || i < availableLinesCount) { + layouts.push(layout); + } else { + layouts.push(this.fitTextToWidth(layout + "...", boxWidth)); + break; + } + } + i++; + }; + //console.log(layouts); + + measurer.rafaelTextObject.attr({"text": layouts.join("\n")}); + + if (horizontalAlign) + measurer.rafaelTextObject.attr({"text-anchor": horizontalAlign}); // end, middle, start + + var bb = measurer.rafaelTextObject.getBBox(); + // TODO: there is somethin wrong with wertical align. May be: measurer.rafaelTextObject.attr({"y": y + height/2 - bb.height/2}) + measurer.rafaelTextObject.attr({"y": y + bb.height/2}); + //var bb = measurer.rafaelTextObject.getBBox(); + + if (measurer.rafaelTextObject.attr("text-anchor") == MULTILINE_HORIZONTAL_ALIGN_MIDDLE ) + measurer.rafaelTextObject.attr("x", x + boxWidth/2); + else if (measurer.rafaelTextObject.attr("text-anchor") == MULTILINE_HORIZONTAL_ALIGN_RIGHT ) + measurer.rafaelTextObject.attr("x", x + boxWidth); + + var boxStyle = {stroke: Color.LightSteelBlue2, "stroke-width": 1.0, "stroke-dasharray": "- "}; + //var box = this.g.rect(x+.5, y + .5, width, height).attr(boxStyle); + var textAreaCX = x + boxWidth/2; + var height = boxHeight; + if (!height) height = bb.height; + var textAreaCY = y + height/2; + var dotLeftTop = this.g.ellipse(x, y, 3, 3).attr({"stroke-width": 0, fill: Color.LightSteelBlue, stroke: "none"}).hide(); + var dotCenter = this.g.ellipse(textAreaCX, textAreaCY, 3, 3).attr({fill: Color.LightSteelBlue2, stroke: "none"}).hide(); + + /* + // real bbox + var bb = measurer.rafaelTextObject.getBBox(); + var rect = paper.rect(bb.x+.5, bb.y + .5, bb.width, bb.height).attr({"stroke-width": 1}); + */ + var rect = this.g.rect(x, y, boxWidth, height).attr({"stroke-width": 1}).attr(boxStyle).hide(); + var debugSet = this.g.set(); + debugSet.push(dotLeftTop, dotCenter, rect); + //debugSet.show(); + }, + + drawTextAnnotation: function(text, x, y, width, height){ + var lineLength = 18; + var path = []; + path.push(["M", x + lineLength, y]); + path.push(["L", x, y]); + path.push(["L", x, y + height]); + path.push(["L", x + lineLength, y + height]); + + path.push(["L", x + lineLength, y + height -1]); + path.push(["L", x + 1, y + height -1]); + path.push(["L", x + 1, y + 1]); + path.push(["L", x + lineLength, y + 1]); + path.push(["z"]); + + var textAreaLines = this.g.path(path); + + var boxWidth = width - (2 * ANNOTATION_TEXT_PADDING); + var boxHeight = height - (2 * ANNOTATION_TEXT_PADDING); + var boxX = x + width/2 - boxWidth/2; + var boxY = y + height/2 - boxHeight/2; + + // for debug + var rectStyle = {stroke: Color(112, 146, 190), "stroke-width": 1.0, "stroke-dasharray": "- "}; + var r = this.g.rect(boxX, boxY, boxWidth, boxHeight).attr(rectStyle); + // + + this.drawAnnotationText(text, boxX, boxY, boxWidth, boxHeight); + }, + + drawLabel111111111: function(text, x, y, width, height, labelAttrs){ + var debug = false; + + // text + if (text != null && text != undefined && text != "") { + var attr = LABEL_FONT; + + //console.log("x", x, "y", y, "width", width, "height", height ); + + wrappedText = text; + if (labelAttrs && labelAttrs.wrapWidth) { + wrappedText = this.wrapTextToWidth(wrappedText, labelAttrs.wrapWidth); + } + var realWidth = this.getStringWidth(wrappedText, attr); + var realHeight = this.getStringHeight(wrappedText, attr); + + var textAreaCX = x + width/2; + var textAreaCY = y + 3 + height + this.getStringHeight(wrappedText, attr)/2; + + var textX = textAreaCX; + var textY = textAreaCY; + + var textAttrs = {}; + if (labelAttrs && labelAttrs.align) { + switch (labelAttrs.align) { + case "left": + textAttrs["text-anchor"] = "start"; + textX = textX - realWidth/2; + break; + case "center": + textAttrs["text-anchor"] = "middle"; + break; + case "right": + textAttrs["text-anchor"] = "end"; + textX = textX + realWidth/2; + break; + } + } + if (labelAttrs && labelAttrs.wrapWidth) { + if (true) { + // Draw frameborder + var textAreaStyle = {stroke: Color.LightSteelBlue2, "stroke-width": 1.0, "stroke-dasharray": "- "}; + var textAreaX = textAreaCX - realWidth/2; + var textAreaY = textAreaCY+.5 - realHeight/2; + var textArea = this.g.rect(textAreaX, textAreaY, realWidth, realHeight).attr(textAreaStyle); + + var textAreaLines = this.g.path("M" + textAreaX + " " + textAreaY + "L" + (textAreaX+realWidth) + " " + (textAreaY+realHeight) + "M" + + (textAreaX+realWidth) + " " + textAreaY + "L" + textAreaX + " " + (textAreaY+realHeight)); + textAreaLines.attr(textAreaStyle); + + this.g.ellipse(textAreaCX, textAreaCY, 3, 3).attr({fill: Color.LightSteelBlue2, stroke: "none"}); + } + } + + var label = this.g.text(textX, textY, wrappedText).attr(attr).attr(textAttrs); + //label.id = Raphael.createUUID(); + //console.log("label ", label.id, ", ", wrappedText); + + if (this.fontSmoothing) { + label.attr({stroke: LABEL_COLOR, "stroke-width":.4}); + } + + // debug + if (debug) { + var imageAreaStyle = {stroke: Color.grey61, "stroke-width": 1.0, "stroke-dasharray": "- "}; + var imageArea = this.g.rect(x+.5, y+.5, width, height).attr(imageAreaStyle); + var imageAreaLines = this.g.path("M" + x + " " + y + "L" + (x+width) + " " + (y+height) + "M" + + (x+width) + " " + y + "L" + x + " " + (y+height)); + imageAreaLines.attr(imageAreaStyle); + var dotStyle = {fill: Color.Coral, stroke: "none"}; + this.g.ellipse(x, y, 3, 3).attr(dotStyle); + this.g.ellipse(x+width, y, 2, 2).attr(dotStyle); + this.g.ellipse(x+width, y+height, 2, 2).attr(dotStyle); + this.g.ellipse(x, y+height, 2, 2).attr(dotStyle); + } + + return label; + } + }, + + vvoid: function(){} +}; diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ProcessDiagramGenerator.js b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ProcessDiagramGenerator.js new file mode 100644 index 000000000..9fb3fef44 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/ProcessDiagramGenerator.js @@ -0,0 +1,1087 @@ + /** + * Class to generate an image based the diagram interchange information in a + * BPMN 2.0 process. + * + * @author (Javascript) Dmitry Farafonov + */ + +var ProcessDiagramGenerator = { + options: {}, + + processDiagramCanvas: [], + + activityDrawInstructions:{}, + + processDiagrams: {}, + + diagramBreadCrumbs: null, + + init: function(){ + // start event + this.activityDrawInstructions["startEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawNoneStartEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // start timer event + this.activityDrawInstructions["startTimerEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = activityImpl.getProperty("isInterrupting"); + processDiagramCanvas.drawTimerStartEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, activityImpl.getProperty("name")); + }; + + // start event + this.activityDrawInstructions["messageStartEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = activityImpl.getProperty("isInterrupting"); + processDiagramCanvas.drawMessageStartEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, activityImpl.getProperty("name")); + }; + + // start signal event + this.activityDrawInstructions["startSignalEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = activityImpl.getProperty("isInterrupting"); + processDiagramCanvas.drawSignalStartEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, activityImpl.getProperty("name")); + }; + + // start multiple event + this.activityDrawInstructions["startMultipleEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = activityImpl.getProperty("isInterrupting"); + processDiagramCanvas.drawMultipleStartEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, activityImpl.getProperty("name")); + }; + + // signal catch + this.activityDrawInstructions["intermediateSignalCatch"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = activityImpl.getProperty("isInterrupting"); + processDiagramCanvas.drawCatchingSignalEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, null); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // message catch + this.activityDrawInstructions["intermediateMessageCatch"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = activityImpl.getProperty("isInterrupting"); + processDiagramCanvas.drawCatchingMessageEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, null); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // multiple catch + this.activityDrawInstructions["intermediateMultipleCatch"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = activityImpl.getProperty("isInterrupting"); + processDiagramCanvas.drawCatchingMultipleEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, null); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + + + // signal throw + this.activityDrawInstructions["intermediateSignalThrow"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawThrowingSignalEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), activityImpl.getProperty("name")); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // message throw + this.activityDrawInstructions["intermediateMessageThrow"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawThrowingMessageEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), activityImpl.getProperty("name")); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // multiple throw + this.activityDrawInstructions["intermediateMultipleThrow"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawThrowingMultipleEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), activityImpl.getProperty("name")); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // none throw + this.activityDrawInstructions["intermediateThrowEvent"] = function() { + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawThrowingNoneEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), activityImpl.getProperty("name")); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // end event + this.activityDrawInstructions["endEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawNoneEndEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // error end event + this.activityDrawInstructions["errorEndEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawErrorEndEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), null); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // message end event + this.activityDrawInstructions["messageEndEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawMessageEndEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), null); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // signal end event + this.activityDrawInstructions["signalEndEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawSignalEndEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), null); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // multiple end event + this.activityDrawInstructions["multipleEndEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawMultipleEndEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), null); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // terminate end event + this.activityDrawInstructions["terminateEndEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawTerminateEndEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // error start event + this.activityDrawInstructions["errorStartEvent"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawErrorStartEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), activityImpl.getProperty("name")); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // task + this.activityDrawInstructions["task"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + // TODO: + //console.error("task is not implemented yet"); + /* + var activityImpl = this; + processDiagramCanvas.drawTask(activityImpl.getProperty("name"), activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), thickBorder); + */ + }; + + + // user task + this.activityDrawInstructions["userTask"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawUserTask(activityImpl.getProperty("name"), activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // script task + this.activityDrawInstructions["scriptTask"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawScriptTask(activityImpl.getProperty("name"), activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // service task + this.activityDrawInstructions["serviceTask"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawServiceTask(activityImpl.getProperty("name"), activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // receive task + this.activityDrawInstructions["receiveTask"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawReceiveTask(activityImpl.getProperty("name"), activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // send task + this.activityDrawInstructions["sendTask"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawSendTask(activityImpl.getProperty("name"), activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // manual task + this.activityDrawInstructions["manualTask"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawManualTask(activityImpl.getProperty("name"), activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // businessRuleTask task + this.activityDrawInstructions["businessRuleTask"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawBusinessRuleTask(activityImpl.getProperty("name"), activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // exclusive gateway + this.activityDrawInstructions["exclusiveGateway"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawExclusiveGateway(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // inclusive gateway + this.activityDrawInstructions["inclusiveGateway"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawInclusiveGateway(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // parallel gateway + this.activityDrawInstructions["parallelGateway"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawParallelGateway(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // eventBasedGateway + this.activityDrawInstructions["eventBasedGateway"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + processDiagramCanvas.drawEventBasedGateway(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + // Boundary timer + this.activityDrawInstructions["boundaryTimer"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = activityImpl.getProperty("isInterrupting"); + processDiagramCanvas.drawCatchingTimerEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, null); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // Boundary catch error + this.activityDrawInstructions["boundaryError"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = activityImpl.getProperty("isInterrupting"); + processDiagramCanvas.drawCatchingErrorEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, null); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // Boundary signal event + this.activityDrawInstructions["boundarySignal"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = activityImpl.getProperty("isInterrupting"); + processDiagramCanvas.drawCatchingSignalEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, null); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // Boundary message event + this.activityDrawInstructions["boundaryMessage"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = activityImpl.getProperty("isInterrupting"); + processDiagramCanvas.drawCatchingMessageEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, null); + + var label = ProcessDiagramGenerator.getActivitiLabel(activityImpl); + if (label) + processDiagramCanvas.drawLabel(label.text, label.x, label.y, label.width, label.height); + }; + + // timer catch event + this.activityDrawInstructions["intermediateTimer"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + + var isInterrupting = null; + processDiagramCanvas.drawCatchingTimerEvent(activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight(), isInterrupting, activityImpl.getProperty("name")); + }; + + // subprocess + this.activityDrawInstructions["subProcess"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + // TODO: + + processDiagramCanvas.setConextObject(activityImpl); + + var isExpanded = activityImpl.getProperty("isExpanded"); + var isTriggeredByEvent = activityImpl.getProperty("triggeredByEvent"); + if(isTriggeredByEvent == undefined) { + isTriggeredByEvent = true; + } + // TODO: check why isTriggeredByEvent = true when undefined + isTriggeredByEvent = false; + + if (isExpanded != undefined && isExpanded == false) { + processDiagramCanvas.drawCollapsedSubProcess(activityImpl.getProperty("name"), activityImpl.getX(), activityImpl.getY(), + activityImpl.getWidth(), activityImpl.getHeight(), isTriggeredByEvent); + } else { + processDiagramCanvas.drawExpandedSubProcess(activityImpl.getProperty("name"), activityImpl.getX(), activityImpl.getY(), + activityImpl.getWidth(), activityImpl.getHeight(), isTriggeredByEvent); + } + + //console.error("subProcess is not implemented yet"); + }; + + // call activity + this.activityDrawInstructions["callActivity"] = function(){ + var activityImpl = this.activity; + var processDiagramCanvas = this.processDiagramCanvas; + processDiagramCanvas.setConextObject(activityImpl); + processDiagramCanvas.drawCollapsedCallActivity(activityImpl.getProperty("name"), activityImpl.getX(), activityImpl.getY(), activityImpl.getWidth(), activityImpl.getHeight()); + }; + + $(document).ready(function(){ + // Protect right click on SVG elements (and on canvas too) + document.body.oncontextmenu = function(event) { + if (window.event.srcElement.tagName == "shape" || window.event.srcElement.tagName == "DIV" && window.event.srcElement.parentElement.className == "diagram") { + + // IE DIAGRAM CANVAS OR SHAPE DETECTED! + return false; + } + return (!Object.isSVGElement(window.event.srcElement)); + }; + }); + }, + + getActivitiLabel:function(activityImpl){ + /* + TODO: Label object should be in activityImpl and looks like: + { + x: 250, + y: 250, + width: 80, + height: 30 + } + And then: + if (!activityImpl.label) + return null; + var label = activityImpl.label; + label.text = activityImpl.name; + return label; + */ + + // But now default label for all events is: + return { + text: activityImpl.getProperty("name"), + x: activityImpl.getX() + .5 + activityImpl.getWidth()/2, + y: activityImpl.getY() + .5 + activityImpl.getHeight() + ICON_PADDING, + width: 100, + height: 0 + }; + }, + + generateDiagram: function(processDefinitionDiagramLayout){ + // Init canvas + var processDefinitionId = processDefinitionDiagramLayout.processDefinition.id; + //console.log("Init canvas ", processDefinitionId); + + if (this.getProcessDiagram(processDefinitionId) != undefined) { + // TODO: may be reset canvas if exists.. Or just show + //console.log("ProcessDiagram '" + processDefinitionId + "' is already generated. Just show it."); + return; + } + var processDiagram = this.initProcessDiagramCanvas(processDefinitionDiagramLayout); + var processDiagramCanvas = processDiagram.diagramCanvas; + + // Draw pool shape, if process is participant in collaboration + + if(processDefinitionDiagramLayout.participantProcess != undefined) { + //console.log("Draw pool shape"); + var pProc = processDefinitionDiagramLayout.participantProcess; + processDiagramCanvas.drawPoolOrLane(pProc.x, pProc.y, pProc.width, pProc.height, pProc.name); + } + + var laneSets = processDefinitionDiagramLayout.laneSets; + var activities = processDefinitionDiagramLayout.activities; + var sequenceFlows = processDefinitionDiagramLayout.sequenceFlows; + + + pb1.set('value', 0); + var cnt = 0; + if (laneSets) + for(var i in laneSets) { + cnt += laneSets[i].lanes.length; + } + if (activities) + cnt += activities.length; + if (sequenceFlows) + cnt += sequenceFlows.length; + var step = (cnt>0)? 100/cnt : 0; + var progress = 0; + //console.log("progress bar step: ", step); + + var task1 = new $.AsyncQueue(); + + // Draw lanes + + task1.add(function (task1) { + if (!laneSets) laneSets = []; + //console.log("> draw lane sets, count:", laneSets.length) + }); + + for(var i in laneSets) { + var laneSet = laneSets[i]; + //laneSet.id, laneSet.name + + task1.add(laneSet.lanes,function (task1, lane) { + progress += step; + pb1.set('value', parseInt(progress)); + + //console.log("--> laneId: " + lane.name + ", name: " + lane.name); + + processDiagramCanvas.drawPoolOrLane(lane.x, lane.y, lane.width, lane.height, lane.name); + }); + } + + // Draw activities + + task1.add(function (task1) { + if (!activities) activities = []; + //console.log("> draw activities, count:", activities.length) + }); + + var activitiesLength = activities.length; + task1.add(activities,function (task1, activityJson) { + var activity = new ActivityImpl(activityJson); + activitiesLength --; + progress += step; + pb1.set('value', parseInt(progress)); + //console.log(activitiesLength, "--> activityId: " + activity.getId() + ", name: " + activity.getProperty("name")); + ProcessDiagramGenerator.drawActivity(processDiagramCanvas, activity); + }); + + // Draw sequence-flows + + task1.add(function (task1) { + if (!sequenceFlows) sequenceFlows = []; + //console.log("> draw sequence flows, count:", sequenceFlows.length) + }); + + var flowsLength = sequenceFlows.length; + task1.add(sequenceFlows,function (task1, flow) { + var waypoints = []; + for(var j in flow.xPointArray) { + waypoints[j] = {x: flow.xPointArray[j], y: flow.yPointArray[j]}; + } + var isDefault = flow.isDefault; + var isConditional = flow.isConditional; + var isHighLighted = flow.isHighLighted; + + // TODO: add source and destination for sequence flows in REST + // parse for test + var f = flow.flow; + var matches = f.match(/\((.*)\)--.*-->\((.*)\)/); + var sourceActivityId, destinationActivityId; + if (matches != null) { + sourceActivityId = matches[1]; + destinationActivityId = matches[2]; + } + flow.sourceActivityId = sourceActivityId; + flow.destinationActivityId = destinationActivityId; + // + flowsLength--; + progress += step; + pb1.set('value', parseInt(progress)); + + //console.log(flowsLength, "--> flow: " + flow.flow); + + processDiagramCanvas.setConextObject(flow); + processDiagramCanvas.drawSequenceflow(waypoints, isConditional, isDefault, isHighLighted); + }); + + task1.onComplete(function(){ + if (progress<100) + pb1.set('value', 100); + //console.log("COMPLETE!!!"); + + //console.timeEnd('generateDiagram'); + }); + + task1.run(); + }, + + getProcessDiagram: function (processDefinitionId) { + return this.processDiagrams[processDefinitionId]; + }, + + initProcessDiagramCanvas: function (processDefinitionDiagramLayout) { + var minX = 0; + var maxX = 0; + var minY = 0; + var maxY = 0; + + if(processDefinitionDiagramLayout.participantProcess != undefined) { + var pProc = processDefinitionDiagramLayout.participantProcess; + + minX = pProc.x; + maxX = pProc.x + pProc.width; + minY = pProc.y; + maxY = pProc.y + pProc.height; + } + + var activities = processDefinitionDiagramLayout.activities; + for(var i in activities) { + var activityJson = activities[i]; + var activity = new ActivityImpl(activityJson); + + // width + if (activity.getX() + activity.getWidth() > maxX) { + maxX = activity.getX() + activity.getWidth(); + } + if (activity.getX() < minX) { + minX = activity.getX(); + } + // height + if (activity.getY() + activity.getHeight() > maxY) { + maxY = activity.getY() + activity.getHeight(); + } + if (activity.getY() < minY) { + minY = activity.getY(); + } + } + + var sequenceFlows = processDefinitionDiagramLayout.sequenceFlows; + for(var i in sequenceFlows) { + var flow = sequenceFlows[i]; + var waypoints = []; + for(var j in flow.xPointArray) { + waypoints[j] = {x: flow.xPointArray[j], y: flow.yPointArray[j]}; + + // width + if (waypoints[j].x > maxX) { + maxX = waypoints[j].x; + } + if (waypoints[j].x < minX) { + minX = waypoints[j].x; + } + // height + if (waypoints[j].y > maxY) { + maxY = waypoints[j].y; + } + if (waypoints[j].y < minY) { + minY = waypoints[j].y; + } + } + } + + var laneSets = processDefinitionDiagramLayout.laneSets; + for(var i in laneSets) { + var laneSet = laneSets[i]; + //laneSet.id, laneSet.name + + for(var j in laneSet.lanes) { + var lane = laneSet.lanes[j]; + // width + if (lane.x + lane.width > maxX) { + maxX = lane.x + lane.width; + } + if (lane.x < minX) { + minX = lane.x; + } + // height + if (lane.y + lane.height > maxY) { + maxY = lane.y + lane.height; + } + if (lane.y < minY) { + minY = lane.y; + } + } + } + + var diagramCanvas = new ProcessDiagramCanvas(); + if (diagramCanvas) { + + // create div in diagramHolder + var diagramHolder = document.getElementById(this.options.diagramHolderId); + if (!diagramHolder) + throw {msg: "Diagram holder not found", error: "diagramHolderNotFound"}; + var div = document.createElement("DIV"); + div.id = processDefinitionDiagramLayout.processDefinition.id; + div.className = "diagram"; + diagramHolder.appendChild(div); + + diagramCanvas.init(maxX + 20, maxY + 20, processDefinitionDiagramLayout.processDefinition.id); + this.processDiagrams[processDefinitionDiagramLayout.processDefinition.id] = { + processDefinitionDiagramLayout: processDefinitionDiagramLayout, + diagramCanvas: diagramCanvas + }; + } + return this.getProcessDiagram(processDefinitionDiagramLayout.processDefinition.id); + //return new DefaultProcessDiagramCanvas(maxX + 10, maxY + 10, minX, minY); + }, + + drawActivity: function(processDiagramCanvas, activity, highLightedActivities) { + var type = activity.getProperty("type"); + var drawInstruction = this.activityDrawInstructions[type]; + if (drawInstruction != null) { + drawInstruction.apply({processDiagramCanvas:processDiagramCanvas, activity:activity}); + } else { + //console.error("no drawInstruction for " + type + ": ", activity); + } + + // Actually draw the markers + if (activity.getProperty("multiInstance") != undefined || activity.getProperty("collapsed") != undefined) { + //console.log(activity.getProperty("name"), activity.properties); + var multiInstanceSequential = (activity.getProperty("multiInstance") == "sequential"); + var multiInstanceParallel = (activity.getProperty("multiInstance") == "parrallel"); + var collapsed = activity.getProperty("collapsed"); + processDiagramCanvas.drawActivityMarkers(activity.getX(), activity.getY(), activity.getWidth(), activity.getHeight(), + multiInstanceSequential, multiInstanceParallel, collapsed); + } + /* + processDiagramCanvas.drawActivityMarkers(activity.getX(), activity.getY(), activity.getWidth(), activity.getHeight(), multiInstanceSequential, + multiInstanceParallel, collapsed); + */ + + // TODO: Draw highlighted activities if they are present + + }, + + setHighLights: function(highLights){ + if (highLights.processDefinitionId == undefined) { + //console.error("Process instance " + highLights.processInstanceId + " doesn't exist"); + return; + } + + var processDiagram = this.getProcessDiagram(highLights.processDefinitionId); + if (processDiagram == undefined) { + //console.error("Process diagram " + highLights.processDefinitionId + " not found"); + return; + } + + var processDiagramCanvas = processDiagram.diagramCanvas; + + // TODO: remove highLightes from all activities before set new highLight + for (var i in highLights.activities) { + var activityId = highLights.activities[i]; + processDiagramCanvas.highLightActivity(activityId); + } + + // TODO: remove highLightes from all flows before set new highLight + for (var i in highLights.flows) { + var flowId = highLights.flows[i]; + var object = processDiagramCanvas.g.getById(flowId); + var flow = object.data("contextObject"); + flow.isHighLighted = true; + processDiagramCanvas.highLightFlow(flowId); + } + }, + + drawHighLights: function(processInstanceId) { + // Load highLights for the processInstanceId + /* + var url = Lang.sub(this.options.processInstanceHighLightsUrl, {processInstanceId: processInstanceId}); + $.ajax({ + url: url, + type: 'GET', + dataType: 'json', + cache: false, + async: true, + }).done(function(data) { + var highLights = data; + if (!highLights) { + console.log("highLights not found"); + return; + } + + console.log("highLights[" + highLights.processDefinitionId + "][" + processInstanceId + "]: ", highLights); + + ProcessDiagramGenerator.setHighLights(highLights); + }).fail(function(jqXHR, textStatus){ + console.log('Get HighLights['+processDefinitionId+'] failure: ', textStatus, jqXHR); + }); + */ + ActivitiRest.getHighLights(processInstanceId, this._drawHighLights); + }, + _drawHighLights: function() { + var highLights = this.highLights; + ProcessDiagramGenerator.setHighLights(highLights); + }, + + // Load processDefinition + + drawDiagram: function(processDefinitionId) { + // Hide all diagrams + var diagrams = $("#" + this.options.diagramHolderId + " div.diagram"); + diagrams.addClass("hidden"); + + + // If processDefinitionId doesn't contain ":" then it's a "processDefinitionKey", not an id. + // Get process definition by key + if (processDefinitionId.indexOf(":") < 0) { + ActivitiRest.getProcessDefinitionByKey(processDefinitionId, this._drawDiagram); + } else { + this._drawDiagram.apply({processDefinitionId: processDefinitionId}); + } + }, + _drawDiagram: function() { + var processDefinitionId = this.processDefinitionId; + + ProcessDiagramGenerator.addBreadCrumbsItem(processDefinitionId); + + + // Check if processDefinition is already loaded and rendered + + + var processDiagram = ProcessDiagramGenerator.getProcessDiagram(processDefinitionId); + + if (processDiagram != undefined && processDiagram != null) { + //console.log("Process diagram " + processDefinitionId + " is already loaded"); + //return; + + var diagram = document.getElementById(processDefinitionId); + $(diagram).removeClass("hidden"); + + // Regenerate image + var processDefinitionDiagramLayout = processDiagram.processDefinitionDiagramLayout; + ProcessDiagramGenerator.generateDiagram(processDefinitionDiagramLayout); + + return; + } + + //console.time('loadDiagram'); + + // Load processDefinition + + ActivitiRest.getProcessDefinition(processDefinitionId, ProcessDiagramGenerator._generateDiagram); + }, + _generateDiagram: function() { + var processDefinitionDiagramLayout = this.processDefinitionDiagramLayout; + + //console.log("process-definition-diagram-layout["+processDefinitionDiagramLayout.processDefinition.id+"]: ", processDefinitionDiagramLayout); + + //console.timeEnd('loadDiagram'); + //console.time('generateDiagram'); + + pb1.set('value', 0); + ProcessDiagramGenerator.generateDiagram(processDefinitionDiagramLayout); + }, + + getProcessDefinitionByKey: function(processDefinitionKey) { + var url = Lang.sub(this.options.processDefinitionByKeyUrl, {processDefinitionKey: processDefinitionKey}); + + var processDefinition; + $.ajax({ + url: url, + type: 'POST', + dataType: 'json', + cache: false, + async: false + }).done(function(data) { + //console.log("ajax returned data"); + //console.log("ajax returned data:", data); + processDefinition = data; + if (!processDefinition) { + //console.error("Process definition '" + processDefinitionKey + "' not found"); + } + }).fail(function(jqXHR, textStatus){ + //console.error('Get diagram layout['+processDefinitionKey+'] failure: ', textStatus, jqXHR); + }); + + if (processDefinition) { + //console.log("Get process definition by key '" + processDefinitionKey + "': ", processDefinition.id); + return processDefinition; + } else { + return null; + } + }, + + addBreadCrumbsItem: function(processDefinitionId){ + var TPL_UL_CONTAINER = '
      ', + TPL_LI_CONTAINER = '
    • {name}
    • '; + + if (!this.diagramBreadCrumbs) + this.diagramBreadCrumbs = $("#" + this.options.diagramBreadCrumbsId); + if (!this.diagramBreadCrumbs) return; + + + var ul = this.diagramBreadCrumbs.find("ul"); + //console.log("ul: ", ul); + if (ul.size() == 0) { + ul = $(TPL_UL_CONTAINER); + this.diagramBreadCrumbs.append(ul); + + } + var liListOld = ul.find("li"); + //console.warn("liListOld", liListOld); + + // TODO: if there is any items after current then remove that before adding new item (m.b. it is a duplicate) + var currentBreadCrumbsItemId = this.currentBreadCrumbsItemId; + found = false; + liListOld.each( + function(index, item) { + //console.warn("item:", $(this)); + if (!found && currentBreadCrumbsItemId == $(this).attr("id")) { + found = true; + return; + } + if (found) { + //console.warn("remove ", $(this).attr("id")); + $(this).remove(); + } + } + ); + + var liListNew = ul.find("li"); + + //console.log("liListNew size: ", liListNew.size()); + var values = { + id: 'breadCrumbsItem_' + liListNew.size(), + processDefinitionId: processDefinitionId, + name: processDefinitionId + }; + + + var tpl = Lang.sub(TPL_LI_CONTAINER, values); + //console.log("tpl: ", tpl); + ul.append(tpl); + + var li = ul.find("#" + values.id); + //console.warn("li:", li); + $('#' + values.id).on('click', this._breadCrumbsItemClick); + + ul.find("li").removeClass("selected"); + li.attr("num", liListNew.size()); + li.addClass("selected"); + this.currentBreadCrumbsItemId = li.attr("id"); + }, + _breadCrumbsItemClick: function(){ + var li = $(this), + id = li.attr("id"), + processDefinitionId = li.attr("processDefinitionId"); + //console.warn("_breadCrumbsItemClick: ", id, ", processDefinitionId: ", processDefinitionId); + + var ul = ProcessDiagramGenerator.diagramBreadCrumbs.one("ul"); + ul.find("li").removeClass("selected"); + li.addClass("selected"); + ProcessDiagramGenerator.currentBreadCrumbsItemId = li.attr("id"); + + // Hide all diagrams + var diagrams = $("#"+ProcessDiagramGenerator.options.diagramHolderId+" div.diagram"); + diagrams.addClass("hidden"); + + var processDiagram = ProcessDiagramGenerator.getProcessDiagram(processDefinitionId); + + var diagram = document.getElementById(processDefinitionId); + if (!diagram) return; + $(diagram).removeClass("hidden"); + + // Regenerate image + var processDefinitionDiagramLayout = processDiagram.processDefinitionDiagramLayout; + ProcessDiagramGenerator.generateDiagram(processDefinitionDiagramLayout); + }, + + showFlowInfo: function(flow){ + var diagramInfo = $("#" + this.options.diagramInfoId); + if (!diagramInfo) return; + + var values = { + flow: flow.flow, + isDefault: (flow.isDefault)? "true":"", + isConditional: (flow.isConditional)? "true":"", + isHighLighted: (flow.isHighLighted)? "true":"", + sourceActivityId: flow.sourceActivityId, + destinationActivityId: flow.destinationActivityId + }; + var TPL_FLOW_INFO = '
      {flow}
      ' + + '
      sourceActivityId: {sourceActivityId}
      ' + + '
      destinationActivityId: {destinationActivityId}
      ' + + '
      isDefault: {isDefault}
      ' + + '
      isConditional: {isConditional}
      ' + + '
      isHighLighted: {isHighLighted}
      '; + var tpl = Lang.sub(TPL_FLOW_INFO, values); + //console.log("info: ", tpl); + diagramInfo.html(tpl); + }, + + showActivityInfo: function(activity){ + var diagramInfo = $("#" + this.options.diagramInfoId); + if (!diagramInfo) return; + + var values = { + activityId: activity.getId(), + name: activity.getProperty("name"), + type: activity.getProperty("type") + }; + var TPL_ACTIVITY_INFO = '' + + '
      activityId: {activityId}
      ' + + '
      name: {name}
      ' + + '
      type: {type}
      '; + var TPL_CALLACTIVITY_INFO = '' + + '
      collapsed: {collapsed}
      ' + + '
      processDefinitonKey: {processDefinitonKey}
      '; + + var template = TPL_ACTIVITY_INFO; + if (activity.getProperty("type") == "callActivity") { + values.collapsed = activity.getProperty("collapsed"); + values.processDefinitonKey = activity.getProperty("processDefinitonKey"); + template += TPL_CALLACTIVITY_INFO; + } else if (activity.getProperty("type") == "callActivity") { + + } + + var tpl = Lang.sub(template, values); + //console.log("info: ", tpl); + diagramInfo.html(tpl); + }, + + hideInfo: function(){ + var diagramInfo = $("#" + this.options.diagramInfoId); + if (!diagramInfo) return; + diagramInfo.html(""); + }, + + vvoid: function(){} +}; + +var Lang = { + SUBREGEX: /\{\s*([^\|\}]+?)\s*(?:\|([^\}]*))?\s*\}/g, + UNDEFINED: 'undefined', + isUndefined: function(o) { + return typeof o === Lang.UNDEFINED; + }, + sub: function(s, o) { + return ((s.replace) ? s.replace(Lang.SUBREGEX, function(match, key) { + return (!Lang.isUndefined(o[key])) ? o[key] : match; + }) : s); + } +}; + +if (Lang.isUndefined(console)) { + console = { log: function() {}, warn: function() {}, error: function() {}}; +} +ProcessDiagramGenerator.init(); \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/jquery/jquery.asyncqueue.js b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/jquery/jquery.asyncqueue.js new file mode 100644 index 000000000..7f9d4d004 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/jquery/jquery.asyncqueue.js @@ -0,0 +1,125 @@ +/* +* This file is part of the jquery plugin "asyncQueue". +* +* (c) Sebastien Roch +* @author (parallel) Dmitry Farafonov +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ +(function($){ + $.AsyncQueue = function() { + var that = this, + queue = [], + completeFunc, + failureFunc, + paused = false, + lastCallbackData, + _run, + _complete, + inQueue = 0, + defaultTimeOut = 10; + + _run = function() { + var f = queue.shift(); + + if (f) { + inQueue++; + setTimeout(function(){ + f.fn.apply(that, [that]); + + if (!f.isParallel) + if (paused === false) { + _run(); + } + inQueue --; + if (inQueue == 0 && queue.length == 0) + _complete(); + }, f.timeOut); + + if (f.isParallel) + if (paused === false) { + _run(); + } + } + }; + + _complete = function(){ + if (completeFunc) + completeFunc.apply(that, [that]); + }; + + this.onComplete = function(func) { + completeFunc = func; + }; + + this.onFailure = function(func) { + failureFunc = func; + }; + + this.add = function(func) { + // TODO: add callback for queue[i] complete + + var obj = arguments[0]; + if (obj && Object.prototype.toString.call(obj) === "[object Array]") { + var fn = arguments[1]; + var timeOut = (typeof(arguments[2]) != "undefined")? arguments[2] : defaultTimeOut; + if (typeof(fn) == "function") { + for(var i = 0; i < obj.length; i++) { + var f = function(objx){ + queue.push({isParallel: true, fn: function(){fn.apply(that, [that, objx]);}, timeOut: timeOut}); + }(obj[i]) + } + } + } else { + var fn = arguments[0]; + var timeOut = (typeof(arguments[1]) != "undefined")? arguments[2] : defaultTimeOut; + queue.push({isParallel: false, fn: func, timeOut: timeOut}); + } + return this; + }; + + this.addParallel = function(func, timeOut) { + // TODO: add callback for queue[i] complete + + queue.push({isParallel: true, fn: func, timeOut: timeOut}); + return this; + }; + + this.storeData = function(dataObject) { + lastCallbackData = dataObject; + return this; + }; + + this.lastCallbackData = function () { + return lastCallbackData; + }; + + this.run = function() { + paused = false; + _run(); + }; + + this.pause = function () { + paused = true; + return this; + }; + + this.failure = function() { + paused = true; + if (failureFunc) { + var args = [that]; + for(i = 0; i < arguments.length; i++) { + args.push(arguments[i]); + } + failureFunc.apply(that, args); + } + }; + + this.size = function(){ + return queue.length; + }; + + return this; + } +})(jQuery); diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/jquery/jquery.js b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/jquery/jquery.js new file mode 100644 index 000000000..8ccd0ea78 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/diagram-viewer/js/jquery/jquery.js @@ -0,0 +1,9266 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).off( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + return this; + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + marginDiv, + fragment, + tds, + events, + eventName, + i, + isSupported, + div = document.createElement( "div" ), + documentElement = document.documentElement; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
      a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( window.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.style.width = "2px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + fragment.removeChild( div ); + + // Null elements to avoid leaks in IE + fragment = select = opt = marginDiv = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop, ptlm, vb, style, html, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; + vb = "visibility:hidden;border:0;"; + style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; + html = "
      " + + "" + + "
      "; + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
      t
      "; + tds = div.getElementsByTagName( "td" ); + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Figure out if the W3C box model works as expected + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + jQuery.boxModel = support.boxModel = div.offsetWidth === 2; + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
      "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.style.cssText = ptlm + vb; + div.innerHTML = html; + + outer = div.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + div = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + return support; +})(); + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ internalKey ] : internalKey; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ internalKey ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + } else { + elem[ internalKey ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var self = jQuery( this ), + args = [ parts[0], value ]; + + self.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( value && elem.nodeType === 1 ) { + attrNames = value.toLowerCase().split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + quick: quickParse( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, origType, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + old = null; + for ( ; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + handlerQueue = [], + i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this.ownerDocument || this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = ( + handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) + ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + ret; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

      "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
      "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
      ", "
      " ], + thead: [ 1, "", "
      " ], + tr: [ 2, "", "
      " ], + td: [ 3, "", "
      " ], + col: [ 2, "", "
      " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and +
      + Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + +
      DirectiveHowSourceRendered
      ng-bind-htmlAutomatically uses $sanitize
      <div ng-bind-html="snippet">
      </div>
      ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value +
      <div ng-bind-html="deliberatelyTrustDangerousSnippet()">
      +</div>
      +
      ng-bindAutomatically escapes
      <div ng-bind="snippet">
      </div>
      +
      + + + it('should sanitize the html snippet by default', function() { + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('

      an html\nclick here\nsnippet

      '); + }); + + it('should inline raw snippet if bound to a trusted value', function() { + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()). + toBe("

      an html\n" + + "click here\n" + + "snippet

      "); + }); + + it('should escape snippet without any filter', function() { + expect(element(by.css('#bind-default div')).getInnerHtml()). + toBe("<p style=\"color:blue\">an html\n" + + "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" + + "snippet</p>"); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new text'); + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('new text'); + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe( + 'new text'); + expect(element(by.css('#bind-default div')).getInnerHtml()).toBe( + "new <b onclick=\"alert(1)\">text</b>"); + }); +
      + + */ +function $SanitizeProvider() { + this.$get = ['$$sanitizeUri', function($$sanitizeUri) { + return function(html) { + var buf = []; + htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) { + return !/^unsafe/.test($$sanitizeUri(uri, isImage)); + })); + return buf.join(''); + }; + }]; +} + +function sanitizeText(chars) { + var buf = []; + var writer = htmlSanitizeWriter(buf, angular.noop); + writer.chars(chars); + return buf.join(''); +} + + +// Regular Expressions for parsing tags and attributes +var START_TAG_REGEXP = + /^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/, + END_TAG_REGEXP = /^<\s*\/\s*([\w:-]+)[^>]*>/, + ATTR_REGEXP = /([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g, + BEGIN_TAG_REGEXP = /^/g, + DOCTYPE_REGEXP = /]*?)>/i, + CDATA_REGEXP = //g, + // Match everything outside of normal chars and " (quote character) + NON_ALPHANUMERIC_REGEXP = /([^\#-~| |!])/g; + + +// Good source of info about elements and attributes +// http://dev.w3.org/html5/spec/Overview.html#semantics +// http://simon.html5.org/html-elements + +// Safe Void Elements - HTML5 +// http://dev.w3.org/html5/spec/Overview.html#void-elements +var voidElements = makeMap("area,br,col,hr,img,wbr"); + +// Elements that you can, intentionally, leave open (and which close themselves) +// http://dev.w3.org/html5/spec/Overview.html#optional-tags +var optionalEndTagBlockElements = makeMap("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"), + optionalEndTagInlineElements = makeMap("rp,rt"), + optionalEndTagElements = angular.extend({}, + optionalEndTagInlineElements, + optionalEndTagBlockElements); + +// Safe Block Elements - HTML5 +var blockElements = angular.extend({}, optionalEndTagBlockElements, makeMap("address,article," + + "aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5," + + "h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")); + +// Inline Elements - HTML5 +var inlineElements = angular.extend({}, optionalEndTagInlineElements, makeMap("a,abbr,acronym,b," + + "bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s," + + "samp,small,span,strike,strong,sub,sup,time,tt,u,var")); + + +// Special Elements (can contain anything) +var specialElements = makeMap("script,style"); + +var validElements = angular.extend({}, + voidElements, + blockElements, + inlineElements, + optionalEndTagElements); + +//Attributes that have href and hence need to be sanitized +var uriAttrs = makeMap("background,cite,href,longdesc,src,usemap"); +var validAttrs = angular.extend({}, uriAttrs, makeMap( + 'abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,'+ + 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,'+ + 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,'+ + 'scope,scrolling,shape,size,span,start,summary,target,title,type,'+ + 'valign,value,vspace,width')); + +function makeMap(str) { + var obj = {}, items = str.split(','), i; + for (i = 0; i < items.length; i++) obj[items[i]] = true; + return obj; +} + + +/** + * @example + * htmlParser(htmlString, { + * start: function(tag, attrs, unary) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * }); + * + * @param {string} html string + * @param {object} handler + */ +function htmlParser( html, handler ) { + var index, chars, match, stack = [], last = html; + stack.last = function() { return stack[ stack.length - 1 ]; }; + + while ( html ) { + chars = true; + + // Make sure we're not in a script or style element + if ( !stack.last() || !specialElements[ stack.last() ] ) { + + // Comment + if ( html.indexOf("", index) === index) { + if (handler.comment) handler.comment( html.substring( 4, index ) ); + html = html.substring( index + 3 ); + chars = false; + } + // DOCTYPE + } else if ( DOCTYPE_REGEXP.test(html) ) { + match = html.match( DOCTYPE_REGEXP ); + + if ( match ) { + html = html.replace( match[0] , ''); + chars = false; + } + // end tag + } else if ( BEGING_END_TAGE_REGEXP.test(html) ) { + match = html.match( END_TAG_REGEXP ); + + if ( match ) { + html = html.substring( match[0].length ); + match[0].replace( END_TAG_REGEXP, parseEndTag ); + chars = false; + } + + // start tag + } else if ( BEGIN_TAG_REGEXP.test(html) ) { + match = html.match( START_TAG_REGEXP ); + + if ( match ) { + html = html.substring( match[0].length ); + match[0].replace( START_TAG_REGEXP, parseStartTag ); + chars = false; + } + } + + if ( chars ) { + index = html.indexOf("<"); + + var text = index < 0 ? html : html.substring( 0, index ); + html = index < 0 ? "" : html.substring( index ); + + if (handler.chars) handler.chars( decodeEntities(text) ); + } + + } else { + html = html.replace(new RegExp("(.*)<\\s*\\/\\s*" + stack.last() + "[^>]*>", 'i'), + function(all, text){ + text = text.replace(COMMENT_REGEXP, "$1").replace(CDATA_REGEXP, "$1"); + + if (handler.chars) handler.chars( decodeEntities(text) ); + + return ""; + }); + + parseEndTag( "", stack.last() ); + } + + if ( html == last ) { + throw $sanitizeMinErr('badparse', "The sanitizer was unable to parse the following block " + + "of html: {0}", html); + } + last = html; + } + + // Clean up any remaining tags + parseEndTag(); + + function parseStartTag( tag, tagName, rest, unary ) { + tagName = angular.lowercase(tagName); + if ( blockElements[ tagName ] ) { + while ( stack.last() && inlineElements[ stack.last() ] ) { + parseEndTag( "", stack.last() ); + } + } + + if ( optionalEndTagElements[ tagName ] && stack.last() == tagName ) { + parseEndTag( "", tagName ); + } + + unary = voidElements[ tagName ] || !!unary; + + if ( !unary ) + stack.push( tagName ); + + var attrs = {}; + + rest.replace(ATTR_REGEXP, + function(match, name, doubleQuotedValue, singleQuotedValue, unquotedValue) { + var value = doubleQuotedValue + || singleQuotedValue + || unquotedValue + || ''; + + attrs[name] = decodeEntities(value); + }); + if (handler.start) handler.start( tagName, attrs, unary ); + } + + function parseEndTag( tag, tagName ) { + var pos = 0, i; + tagName = angular.lowercase(tagName); + if ( tagName ) + // Find the closest opened tag of the same type + for ( pos = stack.length - 1; pos >= 0; pos-- ) + if ( stack[ pos ] == tagName ) + break; + + if ( pos >= 0 ) { + // Close all the open elements, up the stack + for ( i = stack.length - 1; i >= pos; i-- ) + if (handler.end) handler.end( stack[ i ] ); + + // Remove the open elements from the stack + stack.length = pos; + } + } +} + +var hiddenPre=document.createElement("pre"); +var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/; +/** + * decodes all entities into regular string + * @param value + * @returns {string} A string with decoded entities. + */ +function decodeEntities(value) { + if (!value) { return ''; } + + // Note: IE8 does not preserve spaces at the start/end of innerHTML + // so we must capture them and reattach them afterward + var parts = spaceRe.exec(value); + var spaceBefore = parts[1]; + var spaceAfter = parts[3]; + var content = parts[2]; + if (content) { + hiddenPre.innerHTML=content.replace(//g, '>'); +} + +/** + * create an HTML/XML writer which writes to buffer + * @param {Array} buf use buf.jain('') to get out sanitized html string + * @returns {object} in the form of { + * start: function(tag, attrs, unary) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * } + */ +function htmlSanitizeWriter(buf, uriValidator){ + var ignore = false; + var out = angular.bind(buf, buf.push); + return { + start: function(tag, attrs, unary){ + tag = angular.lowercase(tag); + if (!ignore && specialElements[tag]) { + ignore = tag; + } + if (!ignore && validElements[tag] === true) { + out('<'); + out(tag); + angular.forEach(attrs, function(value, key){ + var lkey=angular.lowercase(key); + var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background'); + if (validAttrs[lkey] === true && + (uriAttrs[lkey] !== true || uriValidator(value, isImage))) { + out(' '); + out(key); + out('="'); + out(encodeEntities(value)); + out('"'); + } + }); + out(unary ? '/>' : '>'); + } + }, + end: function(tag){ + tag = angular.lowercase(tag); + if (!ignore && validElements[tag] === true) { + out(''); + } + if (tag == ignore) { + ignore = false; + } + }, + chars: function(chars){ + if (!ignore) { + out(encodeEntities(chars)); + } + } + }; +} + + +// define ngSanitize module and register $sanitize service +angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider); + +/* global sanitizeText: false */ + +/** + * @ngdoc filter + * @name ngSanitize.filter:linky + * @function + * + * @description + * Finds links in text input and turns them into html links. Supports http/https/ftp/mailto and + * plain email address links. + * + * Requires the {@link ngSanitize `ngSanitize`} module to be installed. + * + * @param {string} text Input text. + * @param {string} target Window (_blank|_self|_parent|_top) or named frame to open links in. + * @returns {string} Html-linkified text. + * + * @usage + + * + * @example + + + +
      + Snippet: + + + + + + + + + + + + + + + + + + + + + +
      FilterSourceRendered
      linky filter +
      <div ng-bind-html="snippet | linky">
      </div>
      +
      +
      +
      linky target +
      <div ng-bind-html="snippetWithTarget | linky:'_blank'">
      </div>
      +
      +
      +
      no filter
      <div ng-bind="snippet">
      </div>
      + + + it('should linkify the snippet with urls', function() { + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(4); + }); + + it('should not linkify snippet without the linky filter', function() { + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#escaped-html a')).count()).toEqual(0); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new http://link.'); + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('new http://link.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(1); + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()) + .toBe('new http://link.'); + }); + + it('should work with the target property', function() { + expect(element(by.id('linky-target')). + element(by.binding("snippetWithTarget | linky:'_blank'")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank'); + }); + + + */ +angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) { + var LINKY_URL_REGEXP = + /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/, + MAILTO_REGEXP = /^mailto:/; + + return function(text, target) { + if (!text) return text; + var match; + var raw = text; + var html = []; + var url; + var i; + while ((match = raw.match(LINKY_URL_REGEXP))) { + // We can not end in these as they are sometimes found at the end of the sentence + url = match[0]; + // if we did not match ftp/http/mailto then assume mailto + if (match[2] == match[3]) url = 'mailto:' + url; + i = match.index; + addText(raw.substr(0, i)); + addLink(url, match[0].replace(MAILTO_REGEXP, '')); + raw = raw.substring(i + match[0].length); + } + addText(raw); + return $sanitize(html.join('')); + + function addText(text) { + if (!text) { + return; + } + html.push(sanitizeText(text)); + } + + function addLink(url, text) { + html.push(''); + addText(text); + html.push(''); + } + }; +}]); + + +})(window, window.angular); diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js new file mode 100644 index 000000000..5bff6ba08 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js @@ -0,0 +1,14 @@ +/* + AngularJS v1.2.13 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(p,h,q){'use strict';function E(a){var e=[];s(e,h.noop).chars(a);return e.join("")}function k(a){var e={};a=a.split(",");var d;for(d=0;d=c;d--)e.end&&e.end(f[d]);f.length=c}}var b,g,f=[],l=a;for(f.last=function(){return f[f.length-1]};a;){g=!0;if(f.last()&&x[f.last()])a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(b,a){a=a.replace(H,"$1").replace(I,"$1");e.chars&&e.chars(r(a));return""}),c("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(e.comment&&e.comment(a.substring(4,b)),a=a.substring(b+3),g=!1);else if(y.test(a)){if(b=a.match(y))a= +a.replace(b[0],""),g=!1}else if(J.test(a)){if(b=a.match(z))a=a.substring(b[0].length),b[0].replace(z,c),g=!1}else K.test(a)&&(b=a.match(A))&&(a=a.substring(b[0].length),b[0].replace(A,d),g=!1);g&&(b=a.indexOf("<"),g=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),e.chars&&e.chars(r(g)))}if(a==l)throw L("badparse",a);l=a}c()}function r(a){if(!a)return"";var e=M.exec(a);a=e[1];var d=e[3];if(e=e[2])n.innerHTML=e.replace(//g,">")}function s(a,e){var d=!1,c=h.bind(a,a.push);return{start:function(a,g,f){a=h.lowercase(a);!d&&x[a]&&(d=a);d||!0!==C[a]||(c("<"),c(a),h.forEach(g,function(d,f){var g=h.lowercase(f),k="img"===a&&"src"===g||"background"===g;!0!==O[g]||!0===D[g]&&!e(d,k)||(c(" "),c(f),c('="'),c(B(d)),c('"'))}),c(f?"/>":">"))},end:function(a){a=h.lowercase(a);d||!0!==C[a]||(c(""));a==d&&(d=!1)},chars:function(a){d|| +c(B(a))}}}var L=h.$$minErr("$sanitize"),A=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,z=/^<\s*\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^]*?)>/i,I=/]/,d=/^mailto:/;return function(c,b){function g(a){a&&m.push(E(a))}function f(a,c){m.push("');g(c);m.push("")}if(!c)return c;for(var l,k=c,m=[],n,p;l=k.match(e);)n=l[0],l[2]==l[3]&&(n="mailto:"+n),p=l.index,g(k.substr(0,p)),f(n,l[0].replace(d,"")),k=k.substring(p+l[0].length);g(k);return a(m.join(""))}}])})(window,window.angular); +//# sourceMappingURL=angular-sanitize.min.js.map diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js.map b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js.map new file mode 100644 index 000000000..c479150a7 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-sanitize.min.js", +"lineCount":13, +"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAkJtCC,QAASA,EAAY,CAACC,CAAD,CAAQ,CAC3B,IAAIC,EAAM,EACGC,EAAAC,CAAmBF,CAAnBE,CAAwBN,CAAAO,KAAxBD,CACbH,MAAA,CAAaA,CAAb,CACA,OAAOC,EAAAI,KAAA,CAAS,EAAT,CAJoB,CAmE7BC,QAASA,EAAO,CAACC,CAAD,CAAM,CAAA,IAChBC,EAAM,EAAIC,EAAAA,CAAQF,CAAAG,MAAA,CAAU,GAAV,CAAtB,KAAsCC,CACtC,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBF,CAAAG,OAAhB,CAA8BD,CAAA,EAA9B,CAAmCH,CAAA,CAAIC,CAAA,CAAME,CAAN,CAAJ,CAAA,CAAgB,CAAA,CACnD,OAAOH,EAHa,CAmBtBK,QAASA,EAAU,CAAEC,CAAF,CAAQC,CAAR,CAAkB,CAiFnCC,QAASA,EAAa,CAAEC,CAAF,CAAOC,CAAP,CAAgBC,CAAhB,CAAsBC,CAAtB,CAA8B,CAClDF,CAAA,CAAUrB,CAAAwB,UAAA,CAAkBH,CAAlB,CACV,IAAKI,CAAA,CAAeJ,CAAf,CAAL,CACE,IAAA,CAAQK,CAAAC,KAAA,EAAR,EAAwBC,CAAA,CAAgBF,CAAAC,KAAA,EAAhB,CAAxB,CAAA,CACEE,CAAA,CAAa,EAAb,CAAiBH,CAAAC,KAAA,EAAjB,CAICG,EAAA,CAAwBT,CAAxB,CAAL,EAA0CK,CAAAC,KAAA,EAA1C,EAA0DN,CAA1D,EACEQ,CAAA,CAAa,EAAb,CAAiBR,CAAjB,CAKF,EAFAE,CAEA,CAFQQ,CAAA,CAAcV,CAAd,CAER,EAFmC,CAAC,CAACE,CAErC,GACEG,CAAAM,KAAA,CAAYX,CAAZ,CAEF,KAAIY,EAAQ,EAEZX,EAAAY,QAAA,CAAaC,CAAb,CACE,QAAQ,CAACC,CAAD,CAAQC,CAAR,CAAcC,CAAd,CAAiCC,CAAjC,CAAoDC,CAApD,CAAmE,CAMzEP,CAAA,CAAMI,CAAN,CAAA,CAAcI,CAAA,CALFH,CAKE,EAJTC,CAIS,EAHTC,CAGS,EAFT,EAES,CAN2D,CAD7E,CASItB,EAAAwB,MAAJ,EAAmBxB,CAAAwB,MAAA,CAAerB,CAAf,CAAwBY,CAAxB,CAA+BV,CAA/B,CA5B+B,CA+BpDM,QAASA,EAAW,CAAET,CAAF,CAAOC,CAAP,CAAiB,CAAA,IAC/BsB,EAAM,CADyB,CACtB7B,CAEb,IADAO,CACA,CADUrB,CAAAwB,UAAA,CAAkBH,CAAlB,CACV,CAEE,IAAMsB,CAAN,CAAYjB,CAAAX,OAAZ,CAA2B,CAA3B,CAAqC,CAArC,EAA8B4B,CAA9B,EACOjB,CAAA,CAAOiB,CAAP,CADP,EACuBtB,CADvB,CAAwCsB,CAAA,EAAxC;AAIF,GAAY,CAAZ,EAAKA,CAAL,CAAgB,CAEd,IAAM7B,CAAN,CAAUY,CAAAX,OAAV,CAAyB,CAAzB,CAA4BD,CAA5B,EAAiC6B,CAAjC,CAAsC7B,CAAA,EAAtC,CACMI,CAAA0B,IAAJ,EAAiB1B,CAAA0B,IAAA,CAAalB,CAAA,CAAOZ,CAAP,CAAb,CAGnBY,EAAAX,OAAA,CAAe4B,CAND,CATmB,CAhHF,IAC/BE,CAD+B,CACxB1C,CADwB,CACVuB,EAAQ,EADE,CACEC,EAAOV,CAG5C,KAFAS,CAAAC,KAEA,CAFamB,QAAQ,EAAG,CAAE,MAAOpB,EAAA,CAAOA,CAAAX,OAAP,CAAsB,CAAtB,CAAT,CAExB,CAAQE,CAAR,CAAA,CAAe,CACbd,CAAA,CAAQ,CAAA,CAGR,IAAMuB,CAAAC,KAAA,EAAN,EAAuBoB,CAAA,CAAiBrB,CAAAC,KAAA,EAAjB,CAAvB,CAmDEV,CASA,CATOA,CAAAiB,QAAA,CAAiBc,MAAJ,CAAW,kBAAX,CAAgCtB,CAAAC,KAAA,EAAhC,CAA+C,QAA/C,CAAyD,GAAzD,CAAb,CACL,QAAQ,CAACsB,CAAD,CAAMC,CAAN,CAAW,CACjBA,CAAA,CAAOA,CAAAhB,QAAA,CAAaiB,CAAb,CAA6B,IAA7B,CAAAjB,QAAA,CAA2CkB,CAA3C,CAAyD,IAAzD,CAEHlC,EAAAf,MAAJ,EAAmBe,CAAAf,MAAA,CAAesC,CAAA,CAAeS,CAAf,CAAf,CAEnB,OAAO,EALU,CADd,CASP,CAAArB,CAAA,CAAa,EAAb,CAAiBH,CAAAC,KAAA,EAAjB,CA5DF,KAAyD,CAGvD,GAA8B,CAA9B,GAAKV,CAAAoC,QAAA,CAAa,SAAb,CAAL,CAEER,CAEA,CAFQ5B,CAAAoC,QAAA,CAAa,IAAb,CAAmB,CAAnB,CAER,CAAc,CAAd,EAAKR,CAAL,EAAmB5B,CAAAqC,YAAA,CAAiB,QAAjB,CAAwBT,CAAxB,CAAnB,GAAsDA,CAAtD,GACM3B,CAAAqC,QAEJ,EAFqBrC,CAAAqC,QAAA,CAAiBtC,CAAAuC,UAAA,CAAgB,CAAhB,CAAmBX,CAAnB,CAAjB,CAErB,CADA5B,CACA,CADOA,CAAAuC,UAAA,CAAgBX,CAAhB,CAAwB,CAAxB,CACP,CAAA1C,CAAA,CAAQ,CAAA,CAHV,CAJF,KAUO,IAAKsD,CAAAC,KAAA,CAAoBzC,CAApB,CAAL,CAGL,IAFAmB,CAEA,CAFQnB,CAAAmB,MAAA,CAAYqB,CAAZ,CAER,CACExC,CACA;AADOA,CAAAiB,QAAA,CAAcE,CAAA,CAAM,CAAN,CAAd,CAAyB,EAAzB,CACP,CAAAjC,CAAA,CAAQ,CAAA,CAFV,CAHK,IAQA,IAAKwD,CAAAD,KAAA,CAA4BzC,CAA5B,CAAL,CAGL,IAFAmB,CAEA,CAFQnB,CAAAmB,MAAA,CAAYwB,CAAZ,CAER,CACE3C,CAEA,CAFOA,CAAAuC,UAAA,CAAgBpB,CAAA,CAAM,CAAN,CAAArB,OAAhB,CAEP,CADAqB,CAAA,CAAM,CAAN,CAAAF,QAAA,CAAkB0B,CAAlB,CAAkC/B,CAAlC,CACA,CAAA1B,CAAA,CAAQ,CAAA,CAHV,CAHK,IAUK0D,EAAAH,KAAA,CAAsBzC,CAAtB,CAAL,GACLmB,CADK,CACGnB,CAAAmB,MAAA,CAAY0B,CAAZ,CADH,IAIH7C,CAEA,CAFOA,CAAAuC,UAAA,CAAgBpB,CAAA,CAAM,CAAN,CAAArB,OAAhB,CAEP,CADAqB,CAAA,CAAM,CAAN,CAAAF,QAAA,CAAkB4B,CAAlB,CAAoC3C,CAApC,CACA,CAAAhB,CAAA,CAAQ,CAAA,CANL,CAUFA,EAAL,GACE0C,CAKA,CALQ5B,CAAAoC,QAAA,CAAa,GAAb,CAKR,CAHIH,CAGJ,CAHmB,CAAR,CAAAL,CAAA,CAAY5B,CAAZ,CAAmBA,CAAAuC,UAAA,CAAgB,CAAhB,CAAmBX,CAAnB,CAG9B,CAFA5B,CAEA,CAFe,CAAR,CAAA4B,CAAA,CAAY,EAAZ,CAAiB5B,CAAAuC,UAAA,CAAgBX,CAAhB,CAExB,CAAI3B,CAAAf,MAAJ,EAAmBe,CAAAf,MAAA,CAAesC,CAAA,CAAeS,CAAf,CAAf,CANrB,CAzCuD,CA+DzD,GAAKjC,CAAL,EAAaU,CAAb,CACE,KAAMoC,EAAA,CAAgB,UAAhB,CAC4C9C,CAD5C,CAAN,CAGFU,CAAA,CAAOV,CAvEM,CA2EfY,CAAA,EA/EmC,CA2IrCY,QAASA,EAAc,CAACuB,CAAD,CAAQ,CAC7B,GAAI,CAACA,CAAL,CAAc,MAAO,EAIrB,KAAIC,EAAQC,CAAAC,KAAA,CAAaH,CAAb,CACRI,EAAAA,CAAcH,CAAA,CAAM,CAAN,CAClB,KAAII,EAAaJ,CAAA,CAAM,CAAN,CAEjB,IADIK,CACJ,CADcL,CAAA,CAAM,CAAN,CACd,CACEM,CAAAC,UAKA,CALoBF,CAAApC,QAAA,CAAgB,IAAhB,CAAqB,MAArB,CAKpB,CAAAoC,CAAA,CAAU,aAAA,EAAiBC,EAAjB,CACRA,CAAAE,YADQ,CACgBF,CAAAG,UAE5B,OAAON,EAAP,CAAqBE,CAArB,CAA+BD,CAlBF,CA4B/BM,QAASA,EAAc,CAACX,CAAD,CAAQ,CAC7B,MAAOA,EAAA9B,QAAA,CACG,IADH;AACS,OADT,CAAAA,QAAA,CAEG0C,CAFH,CAE4B,QAAQ,CAACZ,CAAD,CAAO,CAC9C,MAAO,IAAP,CAAcA,CAAAa,WAAA,CAAiB,CAAjB,CAAd,CAAoC,GADU,CAF3C,CAAA3C,QAAA,CAKG,IALH,CAKS,MALT,CAAAA,QAAA,CAMG,IANH,CAMS,MANT,CADsB,CAoB/B7B,QAASA,EAAkB,CAACD,CAAD,CAAM0E,CAAN,CAAmB,CAC5C,IAAIC,EAAS,CAAA,CAAb,CACIC,EAAMhF,CAAAiF,KAAA,CAAa7E,CAAb,CAAkBA,CAAA4B,KAAlB,CACV,OAAO,OACEU,QAAQ,CAACtB,CAAD,CAAMa,CAAN,CAAaV,CAAb,CAAmB,CAChCH,CAAA,CAAMpB,CAAAwB,UAAA,CAAkBJ,CAAlB,CACD2D,EAAAA,CAAL,EAAehC,CAAA,CAAgB3B,CAAhB,CAAf,GACE2D,CADF,CACW3D,CADX,CAGK2D,EAAL,EAAsC,CAAA,CAAtC,GAAeG,CAAA,CAAc9D,CAAd,CAAf,GACE4D,CAAA,CAAI,GAAJ,CAcA,CAbAA,CAAA,CAAI5D,CAAJ,CAaA,CAZApB,CAAAmF,QAAA,CAAgBlD,CAAhB,CAAuB,QAAQ,CAAC+B,CAAD,CAAQoB,CAAR,CAAY,CACzC,IAAIC,EAAKrF,CAAAwB,UAAA,CAAkB4D,CAAlB,CAAT,CACIE,EAAmB,KAAnBA,GAAWlE,CAAXkE,EAAqC,KAArCA,GAA4BD,CAA5BC,EAAyD,YAAzDA,GAAgDD,CAC3B,EAAA,CAAzB,GAAIE,CAAA,CAAWF,CAAX,CAAJ,EACsB,CAAA,CADtB,GACGG,CAAA,CAASH,CAAT,CADH,EAC8B,CAAAP,CAAA,CAAad,CAAb,CAAoBsB,CAApB,CAD9B,GAEEN,CAAA,CAAI,GAAJ,CAIA,CAHAA,CAAA,CAAII,CAAJ,CAGA,CAFAJ,CAAA,CAAI,IAAJ,CAEA,CADAA,CAAA,CAAIL,CAAA,CAAeX,CAAf,CAAJ,CACA,CAAAgB,CAAA,CAAI,GAAJ,CANF,CAHyC,CAA3C,CAYA,CAAAA,CAAA,CAAIzD,CAAA,CAAQ,IAAR,CAAe,GAAnB,CAfF,CALgC,CAD7B,KAwBAqB,QAAQ,CAACxB,CAAD,CAAK,CACdA,CAAA,CAAMpB,CAAAwB,UAAA,CAAkBJ,CAAlB,CACD2D,EAAL,EAAsC,CAAA,CAAtC,GAAeG,CAAA,CAAc9D,CAAd,CAAf,GACE4D,CAAA,CAAI,IAAJ,CAEA,CADAA,CAAA,CAAI5D,CAAJ,CACA,CAAA4D,CAAA,CAAI,GAAJ,CAHF,CAKI5D,EAAJ,EAAW2D,CAAX,GACEA,CADF,CACW,CAAA,CADX,CAPc,CAxBb,OAmCE5E,QAAQ,CAACA,CAAD,CAAO,CACb4E,CAAL;AACEC,CAAA,CAAIL,CAAA,CAAexE,CAAf,CAAJ,CAFgB,CAnCjB,CAHqC,CAja9C,IAAI4D,EAAkB/D,CAAAyF,SAAA,CAAiB,WAAjB,CAAtB,CAyJI3B,EACG,4FA1JP,CA2JEF,EAAiB,2BA3JnB,CA4JEzB,EAAc,yEA5JhB,CA6JE0B,EAAmB,IA7JrB,CA8JEF,EAAyB,SA9J3B,CA+JER,EAAiB,qBA/JnB,CAgKEM,EAAiB,qBAhKnB,CAiKEL,EAAe,yBAjKjB,CAmKEwB,EAA0B,gBAnK5B,CA4KI7C,EAAetB,CAAA,CAAQ,wBAAR,CAIfiF,EAAAA,CAA8BjF,CAAA,CAAQ,gDAAR,CAC9BkF,EAAAA,CAA+BlF,CAAA,CAAQ,OAAR,CADnC,KAEIqB,EAAyB9B,CAAA4F,OAAA,CAAe,EAAf,CACeD,CADf,CAEeD,CAFf,CAF7B,CAOIjE,EAAgBzB,CAAA4F,OAAA,CAAe,EAAf,CAAmBF,CAAnB,CAAgDjF,CAAA,CAAQ,4KAAR,CAAhD,CAPpB;AAYImB,EAAiB5B,CAAA4F,OAAA,CAAe,EAAf,CAAmBD,CAAnB,CAAiDlF,CAAA,CAAQ,2JAAR,CAAjD,CAZrB,CAkBIsC,EAAkBtC,CAAA,CAAQ,cAAR,CAlBtB,CAoBIyE,EAAgBlF,CAAA4F,OAAA,CAAe,EAAf,CACe7D,CADf,CAEeN,CAFf,CAGeG,CAHf,CAIeE,CAJf,CApBpB,CA2BI0D,EAAW/E,CAAA,CAAQ,0CAAR,CA3Bf,CA4BI8E,EAAavF,CAAA4F,OAAA,CAAe,EAAf,CAAmBJ,CAAnB,CAA6B/E,CAAA,CAC1C,ySAD0C,CAA7B,CA5BjB;AA0LI8D,EAAUsB,QAAAC,cAAA,CAAuB,KAAvB,CA1Ld,CA2LI5B,EAAU,wBAsGdlE,EAAA+F,OAAA,CAAe,YAAf,CAA6B,EAA7B,CAAAC,SAAA,CAA0C,WAA1C,CA7UAC,QAA0B,EAAG,CAC3B,IAAAC,KAAA,CAAY,CAAC,eAAD,CAAkB,QAAQ,CAACC,CAAD,CAAgB,CACpD,MAAO,SAAQ,CAAClF,CAAD,CAAO,CACpB,IAAIb,EAAM,EACVY,EAAA,CAAWC,CAAX,CAAiBZ,CAAA,CAAmBD,CAAnB,CAAwB,QAAQ,CAACgG,CAAD,CAAMd,CAAN,CAAe,CAC9D,MAAO,CAAC,SAAA5B,KAAA,CAAeyC,CAAA,CAAcC,CAAd,CAAmBd,CAAnB,CAAf,CADsD,CAA/C,CAAjB,CAGA,OAAOlF,EAAAI,KAAA,CAAS,EAAT,CALa,CAD8B,CAA1C,CADe,CA6U7B,CAuGAR,EAAA+F,OAAA,CAAe,YAAf,CAAAM,OAAA,CAAoC,OAApC,CAA6C,CAAC,WAAD,CAAc,QAAQ,CAACC,CAAD,CAAY,CAAA,IACzEC,EACE,mEAFuE,CAGzEC,EAAgB,UAEpB,OAAO,SAAQ,CAACtD,CAAD,CAAOuD,CAAP,CAAe,CAoB5BC,QAASA,EAAO,CAACxD,CAAD,CAAO,CAChBA,CAAL,EAGAjC,CAAAe,KAAA,CAAU9B,CAAA,CAAagD,CAAb,CAAV,CAJqB,CAOvByD,QAASA,EAAO,CAACC,CAAD,CAAM1D,CAAN,CAAY,CAC1BjC,CAAAe,KAAA,CAAU,KAAV,CACIhC,EAAA6G,UAAA,CAAkBJ,CAAlB,CAAJ;CACExF,CAAAe,KAAA,CAAU,UAAV,CAEA,CADAf,CAAAe,KAAA,CAAUyE,CAAV,CACA,CAAAxF,CAAAe,KAAA,CAAU,IAAV,CAHF,CAKAf,EAAAe,KAAA,CAAU,QAAV,CACAf,EAAAe,KAAA,CAAU4E,CAAV,CACA3F,EAAAe,KAAA,CAAU,IAAV,CACA0E,EAAA,CAAQxD,CAAR,CACAjC,EAAAe,KAAA,CAAU,MAAV,CAX0B,CA1B5B,GAAI,CAACkB,CAAL,CAAW,MAAOA,EAMlB,KALA,IAAId,CAAJ,CACI0E,EAAM5D,CADV,CAEIjC,EAAO,EAFX,CAGI2F,CAHJ,CAII9F,CACJ,CAAQsB,CAAR,CAAgB0E,CAAA1E,MAAA,CAAUmE,CAAV,CAAhB,CAAA,CAEEK,CAMA,CANMxE,CAAA,CAAM,CAAN,CAMN,CAJIA,CAAA,CAAM,CAAN,CAIJ,EAJgBA,CAAA,CAAM,CAAN,CAIhB,GAJ0BwE,CAI1B,CAJgC,SAIhC,CAJ4CA,CAI5C,EAHA9F,CAGA,CAHIsB,CAAAS,MAGJ,CAFA6D,CAAA,CAAQI,CAAAC,OAAA,CAAW,CAAX,CAAcjG,CAAd,CAAR,CAEA,CADA6F,CAAA,CAAQC,CAAR,CAAaxE,CAAA,CAAM,CAAN,CAAAF,QAAA,CAAiBsE,CAAjB,CAAgC,EAAhC,CAAb,CACA,CAAAM,CAAA,CAAMA,CAAAtD,UAAA,CAAc1C,CAAd,CAAkBsB,CAAA,CAAM,CAAN,CAAArB,OAAlB,CAER2F,EAAA,CAAQI,CAAR,CACA,OAAOR,EAAA,CAAUrF,CAAAT,KAAA,CAAU,EAAV,CAAV,CAlBqB,CAL+C,CAAlC,CAA7C,CA1jBsC,CAArC,CAAA,CA2mBET,MA3mBF,CA2mBUA,MAAAC,QA3mBV;", +"sources":["angular-sanitize.js"], +"names":["window","angular","undefined","sanitizeText","chars","buf","htmlSanitizeWriter","writer","noop","join","makeMap","str","obj","items","split","i","length","htmlParser","html","handler","parseStartTag","tag","tagName","rest","unary","lowercase","blockElements","stack","last","inlineElements","parseEndTag","optionalEndTagElements","voidElements","push","attrs","replace","ATTR_REGEXP","match","name","doubleQuotedValue","singleQuotedValue","unquotedValue","decodeEntities","start","pos","end","index","stack.last","specialElements","RegExp","all","text","COMMENT_REGEXP","CDATA_REGEXP","indexOf","lastIndexOf","comment","substring","DOCTYPE_REGEXP","test","BEGING_END_TAGE_REGEXP","END_TAG_REGEXP","BEGIN_TAG_REGEXP","START_TAG_REGEXP","$sanitizeMinErr","value","parts","spaceRe","exec","spaceBefore","spaceAfter","content","hiddenPre","innerHTML","textContent","innerText","encodeEntities","NON_ALPHANUMERIC_REGEXP","charCodeAt","uriValidator","ignore","out","bind","validElements","forEach","key","lkey","isImage","validAttrs","uriAttrs","$$minErr","optionalEndTagBlockElements","optionalEndTagInlineElements","extend","document","createElement","module","provider","$SanitizeProvider","$get","$$sanitizeUri","uri","filter","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","target","addText","addLink","url","isDefined","raw","substr"] +} diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-scroll_0.5.7/angular-scroll.min.js b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-scroll_0.5.7/angular-scroll.min.js new file mode 100644 index 000000000..d979dfe0e --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-scroll_0.5.7/angular-scroll.min.js @@ -0,0 +1 @@ +var duScrollDefaultEasing=function(e){return.5>e?Math.pow(2*e,2)/2:1-Math.pow(2*(1-e),2)/2};angular.module("duScroll",["duScroll.scrollspy","duScroll.requestAnimation","duScroll.smoothScroll","duScroll.scrollContainer","duScroll.scrollHelpers"]).value("duScrollDuration",350).value("duScrollGreedy",!1).value("duScrollEasing",duScrollDefaultEasing),angular.module("duScroll.scrollHelpers",[]).run(["$window","$q","cancelAnimation","requestAnimation","duScrollEasing",function(e,t,n,r,o){var l=angular.element.prototype;this.$get=function(){return l};var i=function(e){return"undefined"!=typeof HTMLDocument&&e instanceof HTMLDocument||e.nodeType&&e.nodeType===e.DOCUMENT_NODE},u=function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||e.nodeType&&e.nodeType===e.ELEMENT_NODE},c=function(e){return u(e)||i(e)?e:e[0]};l.scrollTo=function(t,n,r){var o;if(angular.isElement(t)?o=this.scrollToElement:r&&(o=this.scrollToAnimated),o)return o.apply(this,arguments);var l=c(this);return i(l)?e.scrollTo(t,n):(l.scrollLeft=t,void(l.scrollTop=n))};var a,s;l.scrollToAnimated=function(e,l,i,u){i&&!u&&(u=o);var c=this.scrollLeft(),d=this.scrollTop(),f=Math.round(e-c),p=Math.round(l-d),m=null;a&&(n(a),s.reject());var g=this;if(s=t.defer(),!f&&!p)return s.resolve(),s.promise;var v=function(e){null===m&&(m=e);var t=e-m,n=t>=i?1:u(t/i);g.scrollTo(c+Math.ceil(f*n),d+Math.ceil(p*n)),1>n?a=r(v):(a=null,s.resolve())};return g.scrollTo(c,d),a=r(v),s.promise},l.scrollToElement=function(e,t,n,r){var o=c(this),l=this.scrollTop()+c(e).getBoundingClientRect().top-t;return u(o)&&(l-=o.getBoundingClientRect().top),this.scrollTo(0,l,n,r)};var d={scrollLeft:function(t,n,r){if(angular.isNumber(t))return this.scrollTo(t,this.scrollTop(),n,r);var o=c(this);return i(o)?e.scrollX||document.documentElement.scrollLeft||document.body.scrollLeft:o.scrollLeft},scrollTop:function(t,n,r){if(angular.isNumber(t))return this.scrollTo(this.scrollTop(),t,n,r);var o=c(this);return i(o)?e.scrollY||document.documentElement.scrollTop||document.body.scrollTop:o.scrollTop}},f=function(e,t){return function(n,r){return r?t.apply(this,arguments):e.apply(this,arguments)}};for(var p in d)l[p]=l[p]?f(l[p],d[p]):d[p]}]),angular.module("duScroll.polyfill",[]).factory("polyfill",["$window",function(e){var t=["webkit","moz","o","ms"];return function(n,r){if(e[n])return e[n];for(var o,l=n.substr(0,1).toUpperCase()+n.substr(1),i=0;i=a?"top":null!==e&&a+e<=t.top?"middle":null!==v&&t.top+n+g>=o-v?"bottom":"middle"}function u(){return p[0]===t?t.pageYOffset:p[0].scrollTop}function c(){return p[0]===t?t.document.body.scrollHeight:p[0].scrollHeight}var d={},f=angular.extend({},e,s),p=f.target,m="affix affix-top affix-bottom",g=0,$=0,h=0,v=0,y=null,w=null,b=o.parent();if(f.offsetParent)if(f.offsetParent.match(/^\d+$/))for(var D=0;D<1*f.offsetParent-1;D++)b=b.parent();else b=angular.element(f.offsetParent);return d.init=function(){d.$parseOffsets(),$=a.offset(o[0]).top+g,p.on("scroll",d.checkPosition),p.on("click",d.checkPositionWithEventLoop),r.on("resize",d.$debouncedOnResize),d.checkPosition(),d.checkPositionWithEventLoop()},d.destroy=function(){p.off("scroll",d.checkPosition),p.off("click",d.checkPositionWithEventLoop),r.off("resize",d.$debouncedOnResize)},d.checkPositionWithEventLoop=function(){setTimeout(d.checkPosition,1)},d.checkPosition=function(){var e=u(),t=a.offset(o[0]),n=a.height(o[0]),r=l(w,t,n);y!==r&&(y=r,o.removeClass(m).addClass("affix"+("middle"!==r?"-"+r:"")),"top"===r?(w=null,o.css("position",f.offsetParent?"":"relative"),o.css("top","")):"bottom"===r?(w=f.offsetUnpin?-(1*f.offsetUnpin):t.top-e,o.css("position",f.offsetParent?"":"relative"),o.css("top",f.offsetParent?"":i[0].offsetHeight-v-n-$+"px")):(w=null,o.css("position","fixed"),o.css("top",g+"px")))},d.$onResize=function(){d.$parseOffsets(),d.checkPosition()},d.$debouncedOnResize=n(d.$onResize,50),d.$parseOffsets=function(){o.css("position",f.offsetParent?"":"relative"),f.offsetTop&&("auto"===f.offsetTop&&(f.offsetTop="+0"),f.offsetTop.match(/^[-+]\d+$/)?(g=1*-f.offsetTop,h=f.offsetParent?a.offset(b[0]).top+1*f.offsetTop:a.offset(o[0]).top-a.css(o[0],"marginTop",!0)+1*f.offsetTop):h=1*f.offsetTop),f.offsetBottom&&(v=f.offsetParent&&f.offsetBottom.match(/^[-+]\d+$/)?c()-(a.offset(b[0]).top+a.height(b[0]))+1*f.offsetBottom+1:1*f.offsetBottom)},d.init(),d}var i=angular.element(t.document.body),r=angular.element(t);return o}]}).directive("bsAffix",["$affix","$window",function(e,t){return{restrict:"EAC",require:"^?bsAffixTarget",link:function(n,a,o,i){var r={scope:n,offsetTop:"auto",target:i?i.$element:angular.element(t)};angular.forEach(["offsetTop","offsetBottom","offsetParent","offsetUnpin"],function(e){angular.isDefined(o[e])&&(r[e]=o[e])});var s=e(a,r);n.$on("$destroy",function(){s&&s.destroy(),r=null,s=null})}}}]).directive("bsAffixTarget",function(){return{controller:["$element",function(e){this.$element=e}]}}),angular.module("mgcrea.ngStrap.alert",["mgcrea.ngStrap.modal"]).provider("$alert",function(){var e=this.defaults={animation:"am-fade",prefixClass:"alert",placement:null,template:"alert/alert.tpl.html",container:!1,element:null,backdrop:!1,keyboard:!0,show:!0,duration:!1,type:!1,dismissable:!0};this.$get=["$modal","$timeout",function(t,n){function a(a){var o={},i=angular.extend({},e,a);o=t(i),o.$scope.dismissable=!!i.dismissable,i.type&&(o.$scope.type=i.type);var r=o.show;return i.duration&&(o.show=function(){r(),n(function(){o.hide()},1e3*i.duration)}),o}return a}]}).directive("bsAlert",["$window","$sce","$alert",function(e,t,n){e.requestAnimationFrame||e.setTimeout;return{restrict:"EAC",scope:!0,link:function(e,a,o){var i={scope:e,element:a,show:!1};angular.forEach(["template","placement","keyboard","html","container","animation","duration","dismissable"],function(e){angular.isDefined(o[e])&&(i[e]=o[e])}),angular.forEach(["title","content","type"],function(n){o[n]&&o.$observe(n,function(a){e[n]=t.trustAsHtml(a)})}),o.bsAlert&&e.$watch(o.bsAlert,function(t){angular.isObject(t)?angular.extend(e,t):e.content=t},!0);var r=n(i);a.on(o.trigger||"click",r.toggle),e.$on("$destroy",function(){r&&r.destroy(),i=null,r=null})}}}]),angular.module("mgcrea.ngStrap.aside",["mgcrea.ngStrap.modal"]).provider("$aside",function(){var e=this.defaults={animation:"am-fade-and-slide-right",prefixClass:"aside",placement:"right",template:"aside/aside.tpl.html",contentTemplate:!1,container:!1,element:null,backdrop:!0,keyboard:!0,html:!1,show:!0};this.$get=["$modal",function(t){function n(n){var a={},o=angular.extend({},e,n);return a=t(o)}return n}]}).directive("bsAside",["$window","$sce","$aside",function(e,t,n){e.requestAnimationFrame||e.setTimeout;return{restrict:"EAC",scope:!0,link:function(e,a,o){var i={scope:e,element:a,show:!1};angular.forEach(["template","contentTemplate","placement","backdrop","keyboard","html","container","animation"],function(e){angular.isDefined(o[e])&&(i[e]=o[e])}),angular.forEach(["title","content"],function(n){o[n]&&o.$observe(n,function(a){e[n]=t.trustAsHtml(a)})}),o.bsAside&&e.$watch(o.bsAside,function(t){angular.isObject(t)?angular.extend(e,t):e.content=t},!0);var r=n(i);a.on(o.trigger||"click",r.toggle),e.$on("$destroy",function(){r&&r.destroy(),i=null,r=null})}}}]),angular.module("mgcrea.ngStrap.button",[]).provider("$button",function(){var e=this.defaults={activeClass:"active",toggleEvent:"click"};this.$get=function(){return{defaults:e}}}).directive("bsCheckboxGroup",function(){return{restrict:"A",require:"ngModel",compile:function(e,t){e.attr("data-toggle","buttons"),e.removeAttr("ng-model");var n=e[0].querySelectorAll('input[type="checkbox"]');angular.forEach(n,function(e){var n=angular.element(e);n.attr("bs-checkbox",""),n.attr("ng-model",t.ngModel+"."+n.attr("value"))})}}}).directive("bsCheckbox",["$button","$$rAF",function(e,t){var n=e.defaults,a=/^(true|false|\d+)$/;return{restrict:"A",require:"ngModel",link:function(e,o,i,r){var s=n,l="INPUT"===o[0].nodeName,u=l?o.parent():o,c=angular.isDefined(i.trueValue)?i.trueValue:!0;a.test(i.trueValue)&&(c=e.$eval(i.trueValue));var d=angular.isDefined(i.falseValue)?i.falseValue:!1;a.test(i.falseValue)&&(d=e.$eval(i.falseValue));var f="boolean"!=typeof c||"boolean"!=typeof d;f&&(r.$parsers.push(function(e){return e?c:d}),e.$watch(i.ngModel,function(){r.$render()})),r.$render=function(){var e=angular.equals(r.$modelValue,c);t(function(){l&&(o[0].checked=e),u.toggleClass(s.activeClass,e)})},o.bind(s.toggleEvent,function(){e.$apply(function(){l||r.$setViewValue(!u.hasClass("active")),f||r.$render()})})}}}]).directive("bsRadioGroup",function(){return{restrict:"A",require:"ngModel",compile:function(e,t){e.attr("data-toggle","buttons"),e.removeAttr("ng-model");var n=e[0].querySelectorAll('input[type="radio"]');angular.forEach(n,function(e){angular.element(e).attr("bs-radio",""),angular.element(e).attr("ng-model",t.ngModel)})}}}).directive("bsRadio",["$button","$$rAF",function(e,t){var n=e.defaults,a=/^(true|false|\d+)$/;return{restrict:"A",require:"ngModel",link:function(e,o,i,r){var s=n,l="INPUT"===o[0].nodeName,u=l?o.parent():o,c=a.test(i.value)?e.$eval(i.value):i.value;r.$render=function(){var e=angular.equals(r.$modelValue,c);t(function(){l&&(o[0].checked=e),u.toggleClass(s.activeClass,e)})},o.bind(s.toggleEvent,function(){e.$apply(function(){r.$setViewValue(c),r.$render()})})}}}]),angular.module("mgcrea.ngStrap.datepicker",["mgcrea.ngStrap.helpers.dateParser","mgcrea.ngStrap.tooltip"]).provider("$datepicker",function(){var e=this.defaults={animation:"am-fade",prefixClass:"datepicker",placement:"bottom-left",template:"datepicker/datepicker.tpl.html",trigger:"focus",container:!1,keyboard:!0,html:!1,delay:0,useNative:!1,dateType:"date",dateFormat:"shortDate",modelDateFormat:null,dayFormat:"dd",strictFormat:!1,autoclose:!1,minDate:-1/0,maxDate:+1/0,startView:0,minView:0,startWeek:0,daysOfWeekDisabled:"",iconLeft:"glyphicon glyphicon-chevron-left",iconRight:"glyphicon glyphicon-chevron-right"};this.$get=["$window","$document","$rootScope","$sce","$locale","dateFilter","datepickerViews","$tooltip",function(t,n,a,o,i,r,s,l){function u(t,n,a){function o(e){e.selected=r.$isSelected(e.date)}function i(){t[0].focus()}var r=l(t,angular.extend({},e,a)),u=a.scope,f=r.$options,p=r.$scope;f.startView&&(f.startView-=f.minView);var m=s(r);r.$views=m.views;var g=m.viewDate;p.$mode=f.startView,p.$iconLeft=f.iconLeft,p.$iconRight=f.iconRight;var $=r.$views[p.$mode];p.$select=function(e){r.select(e)},p.$selectPane=function(e){r.$selectPane(e)},p.$toggleMode=function(){r.setMode((p.$mode+1)%r.$views.length)},r.update=function(e){angular.isDate(e)&&!isNaN(e.getTime())&&(r.$date=e,$.update.call($,e)),r.$build(!0)},r.updateDisabledDates=function(e){f.disabledDateRanges=e;for(var t=0,n=p.rows.length;n>t;t++)angular.forEach(p.rows[t],r.$setDisabledEl)},r.select=function(e,t){angular.isDate(n.$dateValue)||(n.$dateValue=new Date(e)),!p.$mode||t?(n.$setViewValue(angular.copy(e)),n.$render(),f.autoclose&&!t&&r.hide(!0)):(angular.extend(g,{year:e.getFullYear(),month:e.getMonth(),date:e.getDate()}),r.setMode(p.$mode-1),r.$build())},r.setMode=function(e){p.$mode=e,$=r.$views[p.$mode],r.$build()},r.$build=function(e){e===!0&&$.built||(e!==!1||$.built)&&$.build.call($)},r.$updateSelected=function(){for(var e=0,t=p.rows.length;t>e;e++)angular.forEach(p.rows[e],o)},r.$isSelected=function(e){return $.isSelected(e)},r.$setDisabledEl=function(e){e.disabled=$.isDisabled(e.date)},r.$selectPane=function(e){var t=$.steps,n=new Date(Date.UTC(g.year+(t.year||0)*e,g.month+(t.month||0)*e,g.date+(t.day||0)*e));angular.extend(g,{year:n.getUTCFullYear(),month:n.getUTCMonth(),date:n.getUTCDate()}),r.$build()},r.$onMouseDown=function(e){if(e.preventDefault(),e.stopPropagation(),d){var t=angular.element(e.target);"button"!==t[0].nodeName.toLowerCase()&&(t=t.parent()),t.triggerHandler("click")}},r.$onKeyDown=function(e){if(/(38|37|39|40|13)/.test(e.keyCode)&&!e.shiftKey&&!e.altKey){if(e.preventDefault(),e.stopPropagation(),13===e.keyCode)return p.$mode?p.$apply(function(){r.setMode(p.$mode-1)}):r.hide(!0);$.onKeyDown(e),u.$digest()}};var h=r.init;r.init=function(){return c&&f.useNative?(t.prop("type","date"),t.css("-webkit-appearance","textfield"),void 0):(d&&(t.prop("type","text"),t.attr("readonly","true"),t.on("click",i)),h(),void 0)};var v=r.destroy;r.destroy=function(){c&&f.useNative&&t.off("click",i),v()};var y=r.show;r.show=function(){y(),setTimeout(function(){r.$element.on(d?"touchstart":"mousedown",r.$onMouseDown),f.keyboard&&t.on("keydown",r.$onKeyDown)})};var w=r.hide;return r.hide=function(e){r.$element.off(d?"touchstart":"mousedown",r.$onMouseDown),f.keyboard&&t.off("keydown",r.$onKeyDown),w(e)},r}var c=(angular.element(t.document.body),/(ip(a|o)d|iphone|android)/gi.test(t.navigator.userAgent)),d="createTouch"in t.document&&c;return e.lang||(e.lang=i.id),u.defaults=e,u}]}).directive("bsDatepicker",["$window","$parse","$q","$locale","dateFilter","$datepicker","$dateParser","$timeout",function(e,t,n,a,o,i,r){var s=(i.defaults,/(ip(a|o)d|iphone|android)/gi.test(e.navigator.userAgent)),l=function(e){return!isNaN(parseFloat(e))&&isFinite(e)};return{restrict:"EAC",require:"ngModel",link:function(e,t,n,a){function u(e){return e&&e.length?e:null}var c={scope:e,controller:a};angular.forEach(["placement","container","delay","trigger","keyboard","html","animation","template","autoclose","dateType","dateFormat","modelDateFormat","dayFormat","strictFormat","startWeek","startDate","useNative","lang","startView","minView","iconLeft","iconRight","daysOfWeekDisabled"],function(e){angular.isDefined(n[e])&&(c[e]=n[e])}),n.bsShow&&e.$watch(n.bsShow,function(e){d&&angular.isDefined(e)&&(angular.isString(e)&&(e=!!e.match(",?(datepicker),?")),e===!0?d.show():d.hide())}),s&&c.useNative&&(c.dateFormat="yyyy-MM-dd");var d=i(t,a,c);c=d.$options,angular.forEach(["minDate","maxDate"],function(e){angular.isDefined(n[e])&&n.$observe(e,function(t){if("today"===t){var n=new Date;d.$options[e]=+new Date(n.getFullYear(),n.getMonth(),n.getDate()+("maxDate"===e?1:0),0,0,0,"minDate"===e?0:-1)}else d.$options[e]=angular.isString(t)&&t.match(/^".+"$/)?+new Date(t.substr(1,t.length-2)):l(t)?+new Date(parseInt(t,10)):angular.isString(t)&&0===t.length?"maxDate"===e?+1/0:-1/0:+new Date(t);!isNaN(d.$options[e])&&d.$build(!1)})}),e.$watch(n.ngModel,function(){d.update(a.$dateValue)},!0),angular.isDefined(n.disabledDates)&&e.$watch(n.disabledDates,function(e,t){e=u(e),t=u(t),e!==t&&d.updateDisabledDates(e)});var f=r({format:c.dateFormat,lang:c.lang,strict:c.strictFormat});a.$parsers.unshift(function(e){if(!e)return a.$setValidity("date",!0),void 0;var t=f.parse(e,a.$dateValue);if(!t||isNaN(t.getTime()))return a.$setValidity("date",!1),void 0;var n=isNaN(d.$options.minDate)||t.getTime()>=d.$options.minDate,i=isNaN(d.$options.maxDate)||t.getTime()<=d.$options.maxDate,r=n&&i;return a.$setValidity("date",r),a.$setValidity("min",n),a.$setValidity("max",i),r&&(a.$dateValue=t),"string"===c.dateType?o(t,c.modelDateFormat||c.dateFormat):"number"===c.dateType?a.$dateValue.getTime():"iso"===c.dateType?a.$dateValue.toISOString():new Date(a.$dateValue)}),a.$formatters.push(function(e){var t;return t=angular.isUndefined(e)||null===e?0/0:angular.isDate(e)?e:"string"===c.dateType?f.parse(e,null,c.modelDateFormat):new Date(e),a.$dateValue=t,a.$dateValue}),a.$render=function(){t.val(!a.$dateValue||isNaN(a.$dateValue.getTime())?"":o(a.$dateValue,c.dateFormat))},e.$on("$destroy",function(){d&&d.destroy(),c=null,d=null})}}}]).provider("datepickerViews",function(){function e(e,t){for(var n=[];e.length>0;)n.push(e.splice(0,t));return n}function t(e,t){return(e%t+t)%t}this.defaults={dayFormat:"dd",daySplit:7};this.$get=["$locale","$sce","dateFilter",function(n,a,o){return function(i){var r=i.$scope,s=i.$options,l=n.DATETIME_FORMATS.SHORTDAY,u=l.slice(s.startWeek).concat(l.slice(0,s.startWeek)),c=a.trustAsHtml(''+u.join('')+""),d=i.$date||(s.startDate?new Date(s.startDate):new Date),f={year:d.getFullYear(),month:d.getMonth(),date:d.getDate()},p=(6e4*d.getTimezoneOffset(),[{format:s.dayFormat,split:7,steps:{month:1},update:function(e,t){!this.built||t||e.getFullYear()!==f.year||e.getMonth()!==f.month?(angular.extend(f,{year:i.$date.getFullYear(),month:i.$date.getMonth(),date:i.$date.getDate()}),i.$build()):e.getDate()!==f.date&&(f.date=i.$date.getDate(),i.$updateSelected())},build:function(){var n=new Date(f.year,f.month,1),a=n.getTimezoneOffset(),l=new Date(+n-864e5*t(n.getDay()-s.startWeek,7)),u=l.getTimezoneOffset(),d=(new Date).toDateString();u!==a&&(l=new Date(+l+6e4*(u-a)));for(var p,m=[],g=0;42>g;g++)p=new Date(l.getFullYear(),l.getMonth(),l.getDate()+g),m.push({date:p,isToday:p.toDateString()===d,label:o(p,this.format),selected:i.$date&&this.isSelected(p),muted:p.getMonth()!==f.month,disabled:this.isDisabled(p)});r.title=o(n,"MMMM yyyy"),r.showLabels=!0,r.labels=c,r.rows=e(m,this.split),this.built=!0},isSelected:function(e){return i.$date&&e.getFullYear()===i.$date.getFullYear()&&e.getMonth()===i.$date.getMonth()&&e.getDate()===i.$date.getDate()},isDisabled:function(e){var t=e.getTime();if(ts.maxDate)return!0;if(-1!==s.daysOfWeekDisabled.indexOf(e.getDay()))return!0;if(s.disabledDateRanges)for(var n=0;n=s.disabledDateRanges[n].start)return t<=s.disabledDateRanges[n].end?!0:!1;return!1},onKeyDown:function(e){var t,n=i.$date.getTime();37===e.keyCode?t=new Date(n-864e5):38===e.keyCode?t=new Date(n-6048e5):39===e.keyCode?t=new Date(n+864e5):40===e.keyCode&&(t=new Date(n+6048e5)),this.isDisabled(t)||i.select(t,!0)}},{name:"month",format:"MMM",split:4,steps:{year:1},update:function(e){this.built&&e.getFullYear()===f.year?e.getMonth()!==f.month&&(angular.extend(f,{month:i.$date.getMonth(),date:i.$date.getDate()}),i.$updateSelected()):(angular.extend(f,{year:i.$date.getFullYear(),month:i.$date.getMonth(),date:i.$date.getDate()}),i.$build())},build:function(){for(var t,n=(new Date(f.year,0,1),[]),a=0;12>a;a++)t=new Date(f.year,a,1),n.push({date:t,label:o(t,this.format),selected:i.$isSelected(t),disabled:this.isDisabled(t)});r.title=o(t,"yyyy"),r.showLabels=!1,r.rows=e(n,this.split),this.built=!0},isSelected:function(e){return i.$date&&e.getFullYear()===i.$date.getFullYear()&&e.getMonth()===i.$date.getMonth()},isDisabled:function(e){var t=+new Date(e.getFullYear(),e.getMonth()+1,0);return ts.maxDate},onKeyDown:function(e){var t=i.$date.getMonth(),n=new Date(i.$date);37===e.keyCode?n.setMonth(t-1):38===e.keyCode?n.setMonth(t-4):39===e.keyCode?n.setMonth(t+1):40===e.keyCode&&n.setMonth(t+4),this.isDisabled(n)||i.select(n,!0)}},{name:"year",format:"yyyy",split:4,steps:{year:12},update:function(e,t){!this.built||t||parseInt(e.getFullYear()/20,10)!==parseInt(f.year/20,10)?(angular.extend(f,{year:i.$date.getFullYear(),month:i.$date.getMonth(),date:i.$date.getDate()}),i.$build()):e.getFullYear()!==f.year&&(angular.extend(f,{year:i.$date.getFullYear(),month:i.$date.getMonth(),date:i.$date.getDate()}),i.$updateSelected())},build:function(){for(var t,n=f.year-f.year%(3*this.split),a=[],s=0;12>s;s++)t=new Date(n+s,0,1),a.push({date:t,label:o(t,this.format),selected:i.$isSelected(t),disabled:this.isDisabled(t)});r.title=a[0].label+"-"+a[a.length-1].label,r.showLabels=!1,r.rows=e(a,this.split),this.built=!0},isSelected:function(e){return i.$date&&e.getFullYear()===i.$date.getFullYear()},isDisabled:function(e){var t=+new Date(e.getFullYear()+1,0,0);return ts.maxDate},onKeyDown:function(e){var t=i.$date.getFullYear(),n=new Date(i.$date);37===e.keyCode?n.setYear(t-1):38===e.keyCode?n.setYear(t-4):39===e.keyCode?n.setYear(t+1):40===e.keyCode&&n.setYear(t+4),this.isDisabled(n)||i.select(n,!0)}}]);return{views:s.minView?Array.prototype.slice.call(p,s.minView):p,viewDate:f}}}]}),angular.module("mgcrea.ngStrap.dropdown",["mgcrea.ngStrap.tooltip"]).provider("$dropdown",function(){var e=this.defaults={animation:"am-fade",prefixClass:"dropdown",placement:"bottom-left",template:"dropdown/dropdown.tpl.html",trigger:"click",container:!1,keyboard:!0,html:!1,delay:0};this.$get=["$window","$rootScope","$tooltip",function(t,n,a){function o(t,o){function s(e){return e.target!==t[0]?e.target!==t[0]&&l.hide():void 0}{var l={},u=angular.extend({},e,o);l.$scope=u.scope&&u.scope.$new()||n.$new()}l=a(t,u);var c=t.parent();l.$onKeyDown=function(e){if(/(38|40)/.test(e.keyCode)){e.preventDefault(),e.stopPropagation();var t=angular.element(l.$element[0].querySelectorAll("li:not(.divider) a"));if(t.length){var n;angular.forEach(t,function(e,t){r&&r.call(e,":focus")&&(n=t)}),38===e.keyCode&&n>0?n--:40===e.keyCode&&n1){var r=i.search(n[t]);e=e.split(n[t]).join(""),m[n[t]]&&(a[r]=m[n[t]])}return angular.forEach(a,function(e){e&&o.push(e)}),o}function s(e){return e.replace(/\//g,"[\\/]").replace("/-/g","[-]").replace(/\./g,"[.]").replace(/\\s/g,"[\\s]")}function l(e){var t,n=Object.keys(p),a=e;for(t=0;tu?a=setTimeout(l,t-u):(a=null,n||(s=e.apply(i,o)))},u=n&&!a;return a||(a=setTimeout(l,t)),u&&(s=e.apply(i,o)),s}}).constant("throttle",function(e,t,n){var a,o,i,r=null,s=0;n||(n={});var l=function(){s=n.leading===!1?0:new Date,r=null,i=e.apply(a,o)};return function(){var u=new Date;s||n.leading!==!1||(s=u);var c=t-(u-s);return a=this,o=arguments,0>=c?(clearTimeout(r),r=null,s=u,i=e.apply(a,o)):r||n.trailing===!1||(r=setTimeout(l,c)),i}}),angular.module("mgcrea.ngStrap.helpers.dimensions",[]).factory("dimensions",["$document","$window",function(){var t=(angular.element,{}),n=t.nodeName=function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()};t.css=function(t,n,a){var o;return o=t.currentStyle?t.currentStyle[n]:e.getComputedStyle?e.getComputedStyle(t)[n]:t.style[n],a===!0?parseFloat(o)||0:o},t.offset=function(t){var n=t.getBoundingClientRect(),a=t.ownerDocument;return{width:n.width||t.offsetWidth,height:n.height||t.offsetHeight,top:n.top+(e.pageYOffset||a.documentElement.scrollTop)-(a.documentElement.clientTop||0),left:n.left+(e.pageXOffset||a.documentElement.scrollLeft)-(a.documentElement.clientLeft||0)}},t.position=function(e){var o,i,r={top:0,left:0};return"fixed"===t.css(e,"position")?i=e.getBoundingClientRect():(o=a(e),i=t.offset(e),i=t.offset(e),n(o,"html")||(r=t.offset(o)),r.top+=t.css(o,"borderTopWidth",!0),r.left+=t.css(o,"borderLeftWidth",!0)),{width:e.offsetWidth,height:e.offsetHeight,top:i.top-r.top-t.css(e,"marginTop",!0),left:i.left-r.left-t.css(e,"marginLeft",!0)}};var a=function(e){var a=e.ownerDocument,o=e.offsetParent||a;if(n(o,"#document"))return a.documentElement;for(;o&&!n(o,"html")&&"static"===t.css(o,"position");)o=o.offsetParent;return o||a.documentElement};return t.height=function(e,n){var a=e.offsetHeight;return n?a+=t.css(e,"marginTop",!0)+t.css(e,"marginBottom",!0):a-=t.css(e,"paddingTop",!0)+t.css(e,"paddingBottom",!0)+t.css(e,"borderTopWidth",!0)+t.css(e,"borderBottomWidth",!0),a},t.width=function(e,n){var a=e.offsetWidth;return n?a+=t.css(e,"marginLeft",!0)+t.css(e,"marginRight",!0):a-=t.css(e,"paddingLeft",!0)+t.css(e,"paddingRight",!0)+t.css(e,"borderLeftWidth",!0)+t.css(e,"borderRightWidth",!0),a},t}]),angular.module("mgcrea.ngStrap.helpers.parseOptions",[]).provider("$parseOptions",function(){var e=this.defaults={regexp:/^\s*(.*?)(?:\s+as\s+(.*?))?(?:\s+group\s+by\s+(.*))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+(.*?)(?:\s+track\s+by\s+(.*?))?$/};this.$get=["$parse","$q",function(t,n){function a(a,o){function i(e,t){return e.map(function(e,n){var a,o,i={};return i[c]=e,a=u(t,i),o=p(t,i)||n,{label:a,value:o}})}var r={},s=angular.extend({},e,o);r.$values=[];var l,u,c,d,f,p,m;return r.init=function(){r.$match=l=a.match(s.regexp),u=t(l[2]||l[1]),c=l[4]||l[6],d=l[5],f=t(l[3]||""),p=t(l[2]?l[1]:c),m=t(l[7])},r.valuesFn=function(e,t){return n.when(m(e,t)).then(function(t){return r.$values=t?i(t,e):{},r.$values})},r.init(),r}return a}]}),angular.version.minor<3&&angular.version.dot<14&&angular.module("ng").factory("$$rAF",["$window","$timeout",function(e,t){var n=e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame,a=e.cancelAnimationFrame||e.webkitCancelAnimationFrame||e.mozCancelAnimationFrame||e.webkitCancelRequestAnimationFrame,o=!!n,i=o?function(e){var t=n(e);return function(){a(t)}}:function(e){var n=t(e,16.66,!1);return function(){t.cancel(n)}};return i.supported=o,i}]),angular.module("mgcrea.ngStrap.modal",["mgcrea.ngStrap.helpers.dimensions"]).provider("$modal",function(){var e=this.defaults={animation:"am-fade",backdropAnimation:"am-fade",prefixClass:"modal",prefixEvent:"modal",placement:"top",template:"modal/modal.tpl.html",contentTemplate:!1,container:!1,element:null,backdrop:!0,keyboard:!0,html:!1,show:!0};this.$get=["$window","$rootScope","$compile","$q","$templateCache","$http","$animate","$timeout","$sce","dimensions",function(n,a,o,i,r,s,l,u,c){function d(t){function n(e){e.target===e.currentTarget&&("static"===r.backdrop?i.focus():i.hide())}var i={},r=i.$options=angular.extend({},e,t);i.$promise=p(r.template);var s=i.$scope=r.scope&&r.scope.$new()||a.$new();r.element||r.container||(r.container="body"),m(["title","content"],function(e){r[e]&&(s[e]=c.trustAsHtml(r[e]))}),s.$hide=function(){s.$$postDigest(function(){i.hide()})},s.$show=function(){s.$$postDigest(function(){i.show()})},s.$toggle=function(){s.$$postDigest(function(){i.toggle()})},r.contentTemplate&&(i.$promise=i.$promise.then(function(e){var n=angular.element(e);return p(r.contentTemplate).then(function(e){var a=f('[ng-bind="content"]',n[0]).removeAttr("ng-bind").html(e);return t.template||a.next().remove(),n[0].outerHTML})}));var u,d,y=angular.element('
      ');return i.$promise.then(function(e){angular.isObject(e)&&(e=e.data),r.html&&(e=e.replace(v,'ng-bind-html="')),e=g.apply(e),u=o(e),i.init()}),i.init=function(){r.show&&s.$$postDigest(function(){i.show()})},i.destroy=function(){d&&(d.remove(),d=null),y&&(y.remove(),y=null),s.$destroy()},i.show=function(){s.$emit(r.prefixEvent+".show.before",i);var e;e=angular.isElement(r.container)?r.container:r.container?f(r.container):null;var t=r.container?null:r.element;d=i.$element=u(s,function(){}),d.css({display:"block"}).addClass(r.placement),r.animation&&(r.backdrop&&y.addClass(r.backdropAnimation),d.addClass(r.animation)),r.backdrop&&l.enter(y,h,null,function(){}),l.enter(d,e,t,function(){s.$emit(r.prefixEvent+".show",i)}),s.$isShown=!0,s.$$phase||s.$root&&s.$root.$$phase||s.$digest();var a=d[0];$(function(){a.focus()}),h.addClass(r.prefixClass+"-open"),r.animation&&h.addClass(r.prefixClass+"-with-"+r.animation),r.backdrop&&(d.on("click",n),y.on("click",n)),r.keyboard&&d.on("keyup",i.$onKeyUp)},i.hide=function(){s.$emit(r.prefixEvent+".hide.before",i),l.leave(d,function(){s.$emit(r.prefixEvent+".hide",i),h.removeClass(r.prefixClass+"-open"),r.animation&&h.removeClass(r.prefixClass+"-with-"+r.animation)}),r.backdrop&&l.leave(y,function(){}),s.$isShown=!1,s.$$phase||s.$root&&s.$root.$$phase||s.$digest(),r.backdrop&&(d.off("click",n),y.off("click",n)),r.keyboard&&d.off("keyup",i.$onKeyUp)},i.toggle=function(){s.$isShown?i.hide():i.show()},i.focus=function(){d[0].focus()},i.$onKeyUp=function(e){27===e.which&&s.$isShown&&(i.hide(),e.stopPropagation())},i}function f(e,n){return angular.element((n||t).querySelectorAll(e))}function p(e){return i.when(r.get(e)||s.get(e)).then(function(t){return angular.isObject(t)?(r.put(e,t.data),t.data):t})}var m=angular.forEach,g=String.prototype.trim,$=n.requestAnimationFrame||n.setTimeout,h=angular.element(n.document.body),v=/ng-bind="/gi;return d}]}).directive("bsModal",["$window","$sce","$modal",function(e,t,n){return{restrict:"EAC",scope:!0,link:function(e,a,o){var i={scope:e,element:a,show:!1};angular.forEach(["template","contentTemplate","placement","backdrop","keyboard","html","container","animation"],function(e){angular.isDefined(o[e])&&(i[e]=o[e])}),angular.forEach(["title","content"],function(n){o[n]&&o.$observe(n,function(a){e[n]=t.trustAsHtml(a)})}),o.bsModal&&e.$watch(o.bsModal,function(t){angular.isObject(t)?angular.extend(e,t):e.content=t},!0);var r=n(i);a.on(o.trigger||"click",r.toggle),e.$on("$destroy",function(){r&&r.destroy(),i=null,r=null})}}}]),angular.module("mgcrea.ngStrap.navbar",[]).provider("$navbar",function(){var e=this.defaults={activeClass:"active",routeAttr:"data-match-route",strict:!1};this.$get=function(){return{defaults:e}}}).directive("bsNavbar",["$window","$location","$navbar",function(e,t,n){var a=n.defaults;return{restrict:"A",link:function(e,n,o){var i=angular.copy(a);angular.forEach(Object.keys(a),function(e){angular.isDefined(o[e])&&(i[e]=o[e])}),e.$watch(function(){return t.path()},function(e){var t=n[0].querySelectorAll("li["+i.routeAttr+"]");angular.forEach(t,function(t){var n=angular.element(t),a=n.attr(i.routeAttr).replace("/","\\/");i.strict&&(a="^"+a+"$");var o=new RegExp(a,["i"]);o.test(e)?n.addClass(i.activeClass):n.removeClass(i.activeClass)})})}}}]),angular.module("mgcrea.ngStrap.popover",["mgcrea.ngStrap.tooltip"]).provider("$popover",function(){var e=this.defaults={animation:"am-fade",customClass:"",container:!1,target:!1,placement:"right",template:"popover/popover.tpl.html",contentTemplate:!1,trigger:"click",keyboard:!0,html:!1,title:"",content:"",delay:0};this.$get=["$tooltip",function(t){function n(n,a){var o=angular.extend({},e,a),i=t(n,o);return o.content&&(i.$scope.content=o.content),i}return n}]}).directive("bsPopover",["$window","$sce","$popover",function(e,t,n){var a=e.requestAnimationFrame||e.setTimeout;return{restrict:"EAC",scope:!0,link:function(e,o,i){var r={scope:e};angular.forEach(["template","contentTemplate","placement","container","target","delay","trigger","keyboard","html","animation","customClass"],function(e){angular.isDefined(i[e])&&(r[e]=i[e])}),angular.forEach(["title","content"],function(n){i[n]&&i.$observe(n,function(o,i){e[n]=t.trustAsHtml(o),angular.isDefined(i)&&a(function(){s&&s.$applyPlacement() +})})}),i.bsPopover&&e.$watch(i.bsPopover,function(t,n){angular.isObject(t)?angular.extend(e,t):e.content=t,angular.isDefined(n)&&a(function(){s&&s.$applyPlacement()})},!0),i.bsShow&&e.$watch(i.bsShow,function(e){s&&angular.isDefined(e)&&(angular.isString(e)&&(e=!!e.match(",?(popover),?")),e===!0?s.show():s.hide())});var s=n(o,r);e.$on("$destroy",function(){s&&s.destroy(),r=null,s=null})}}}]),angular.module("mgcrea.ngStrap.scrollspy",["mgcrea.ngStrap.helpers.debounce","mgcrea.ngStrap.helpers.dimensions"]).provider("$scrollspy",function(){var e=this.$$spies={},n=this.defaults={debounce:150,throttle:100,offset:100};this.$get=["$window","$document","$rootScope","dimensions","debounce","throttle",function(a,o,i,r,s,l){function u(e,t){return e[0].nodeName&&e[0].nodeName.toLowerCase()===t.toLowerCase()}function c(o){var c=angular.extend({},n,o);c.element||(c.element=p);var m=u(c.element,"body"),g=m?d:c.element,$=m?"window":c.id;if(e[$])return e[$].$$count++,e[$];var h,v,y,w,b,D,k,S,T={},x=T.$trackedElements=[],M=[];return T.init=function(){this.$$count=1,w=s(this.checkPosition,c.debounce),b=l(this.checkPosition,c.throttle),g.on("click",this.checkPositionWithEventLoop),d.on("resize",w),g.on("scroll",b),D=s(this.checkOffsets,c.debounce),h=i.$on("$viewContentLoaded",D),v=i.$on("$includeContentLoaded",D),D(),$&&(e[$]=T)},T.destroy=function(){this.$$count--,this.$$count>0||(g.off("click",this.checkPositionWithEventLoop),d.off("resize",w),g.off("scroll",w),h(),v(),$&&delete e[$])},T.checkPosition=function(){if(M.length){if(S=(m?a.pageYOffset:g.prop("scrollTop"))||0,k=Math.max(a.innerHeight,f.prop("clientHeight")),SM[e+1].offsetTop))return T.$activateElement(M[e])}},T.checkPositionWithEventLoop=function(){setTimeout(this.checkPosition,1)},T.$activateElement=function(e){if(y){var t=T.$getTrackedElement(y);t&&(t.source.removeClass("active"),u(t.source,"li")&&u(t.source.parent().parent(),"li")&&t.source.parent().parent().removeClass("active"))}y=e.target,e.source.addClass("active"),u(e.source,"li")&&u(e.source.parent().parent(),"li")&&e.source.parent().parent().addClass("active")},T.$getTrackedElement=function(e){return x.filter(function(t){return t.target===e})[0]},T.checkOffsets=function(){angular.forEach(x,function(e){var n=t.querySelector(e.target);e.offsetTop=n?r.offset(n).top:null,c.offset&&null!==e.offsetTop&&(e.offsetTop-=1*c.offset)}),M=x.filter(function(e){return null!==e.offsetTop}).sort(function(e,t){return e.offsetTop-t.offsetTop}),w()},T.trackElement=function(e,t){x.push({target:e,source:t})},T.untrackElement=function(e,t){for(var n,a=x.length;a--;)if(x[a].target===e&&x[a].source===t){n=a;break}x=x.splice(n,1)},T.activate=function(e){x[e].addClass("active")},T.init(),T}var d=angular.element(a),f=angular.element(o.prop("documentElement")),p=angular.element(a.document.body);return c}]}).directive("bsScrollspy",["$rootScope","debounce","dimensions","$scrollspy",function(e,t,n,a){return{restrict:"EAC",link:function(e,t,n){var o={scope:e};angular.forEach(["offset","target"],function(e){angular.isDefined(n[e])&&(o[e]=n[e])});var i=a(o);i.trackElement(o.target,t),e.$on("$destroy",function(){i&&(i.untrackElement(o.target,t),i.destroy()),o=null,i=null})}}}]).directive("bsScrollspyList",["$rootScope","debounce","dimensions","$scrollspy",function(){return{restrict:"A",compile:function(e){var t=e[0].querySelectorAll("li > a[href]");angular.forEach(t,function(e){var t=angular.element(e);t.parent().attr("bs-scrollspy","").attr("data-target",t.attr("href"))})}}}]),angular.module("mgcrea.ngStrap.select",["mgcrea.ngStrap.tooltip","mgcrea.ngStrap.helpers.parseOptions"]).provider("$select",function(){var e=this.defaults={animation:"am-fade",prefixClass:"select",prefixEvent:"$select",placement:"bottom-left",template:"select/select.tpl.html",trigger:"focus",container:!1,keyboard:!0,html:!1,delay:0,multiple:!1,allNoneButtons:!1,sort:!0,caretHtml:' ',placeholder:"Choose among the following...",maxLength:3,maxLengthHtml:"selected",iconCheckmark:"glyphicon glyphicon-ok"};this.$get=["$window","$document","$rootScope","$tooltip",function(t,n,a,o){function i(t,n,a){var i={},r=angular.extend({},e,a);i=o(t,r);var l=i.$scope;l.$matches=[],l.$activeIndex=0,l.$isMultiple=r.multiple,l.$showAllNoneButtons=r.allNoneButtons&&r.multiple,l.$iconCheckmark=r.iconCheckmark,l.$activate=function(e){l.$$postDigest(function(){i.activate(e)})},l.$select=function(e){l.$$postDigest(function(){i.select(e)})},l.$isVisible=function(){return i.$isVisible()},l.$isActive=function(e){return i.$isActive(e)},l.$selectAll=function(){for(var e=0;e=l.$matches.length&&(l.$activeIndex=r.multiple?[]:0)},i.$isVisible=function(){return r.minLength&&n?l.$matches.length&&n.$viewValue.length>=r.minLength:l.$matches.length},i.$isActive=function(e){return r.multiple?-1!==l.$activeIndex.indexOf(e):l.$activeIndex===e},i.$getIndex=function(e){var t=l.$matches.length,n=t;if(t){for(n=t;n--&&l.$matches[n].value!==e;);if(!(0>n))return n}},i.$onMouseDown=function(e){if(e.preventDefault(),e.stopPropagation(),s){var t=angular.element(e.target);t.triggerHandler("click")}},i.$onKeyDown=function(e){if(/(9|13|38|40)/.test(e.keyCode)){if(e.preventDefault(),e.stopPropagation(),!r.multiple&&(13===e.keyCode||9===e.keyCode))return i.select(l.$activeIndex);38===e.keyCode&&l.$activeIndex>0?l.$activeIndex--:40===e.keyCode&&l.$activeIndex'),l.after(t)}var u=o(n.ngOptions),c=a(t,r,s),d=u.$match[7].replace(/\|.+/,"").trim();e.$watch(d,function(){u.valuesFn(e,r).then(function(e){c.update(e),r.$render()})},!0),e.$watch(n.ngModel,function(){c.$updateActiveIndex(),r.$render()},!0),r.$render=function(){var e,a;s.multiple&&angular.isArray(r.$modelValue)?(e=r.$modelValue.map(function(e){return a=c.$getIndex(e),angular.isDefined(a)?c.$scope.$matches[a].label:!1}).filter(angular.isDefined),e=e.length>(s.maxLength||i.maxLength)?e.length+" "+(s.maxLengthHtml||i.maxLengthHtml):e.join(", ")):(a=c.$getIndex(r.$modelValue),e=angular.isDefined(a)?c.$scope.$matches[a].label:!1),t.html((e?e:n.placeholder||i.placeholder)+i.caretHtml)},e.$on("$destroy",function(){c&&c.destroy(),s=null,c=null})}}}]),angular.module("mgcrea.ngStrap.tab",[]).provider("$tab",function(){var e=this.defaults={animation:"am-fade",template:"tab/tab.tpl.html",navClass:"nav-tabs"},t=this.controller=function(t,n,a){var o=this;o.$options=angular.copy(e),angular.forEach(["animation"],function(e){angular.isDefined(a[e])&&(o.$options[e]=a[e])}),o.$panes=t.$panes=[],o.$viewChangeListeners=[],o.$push=function(e){o.$panes.push(e)},o.$panes.$active=0,o.$setActive=t.$setActive=function(e){o.$panes.$active=e,o.$viewChangeListeners.forEach(function(e){e()})}};this.$get=function(){var n={};return n.defaults=e,n.controller=t,n}}).directive("bsTabs",["$window","$animate","$tab",function(e,t,n){var a=n.defaults;return{require:["?ngModel","bsTabs"],transclude:!0,scope:!0,controller:n.controller,templateUrl:function(e,t){return t.template||a.template},link:function(e,t,n,o){var i=o[0],r=o[1];e.$navClass=n.navClass||a.navClass,i&&(r.$viewChangeListeners.push(function(){i.$setViewValue(r.$panes.$active)}),i.$formatters.push(function(e){return r.$setActive(1*e),e}))}}}]).directive("bsPane",["$window","$animate","$sce",function(e,t,n){return{require:["^?ngModel","^bsTabs"],scope:!0,link:function(e,a,o,i){function r(){var n=s.$panes.indexOf(e),o=s.$panes.$active;t[n===o?"addClass":"removeClass"](a,"active")}var s=(i[0],i[1]);a.addClass("tab-pane"),o.$observe("title",function(t){e.title=n.trustAsHtml(t)}),s.$options.animation&&a.addClass(s.$options.animation),s.$push(e),s.$viewChangeListeners.push(function(){r()}),r()}}}]),angular.module("mgcrea.ngStrap.timepicker",["mgcrea.ngStrap.helpers.dateParser","mgcrea.ngStrap.tooltip"]).provider("$timepicker",function(){var e=this.defaults={animation:"am-fade",prefixClass:"timepicker",placement:"bottom-left",template:"timepicker/timepicker.tpl.html",trigger:"focus",container:!1,keyboard:!0,html:!1,delay:0,useNative:!0,timeType:"date",timeFormat:"shortTime",modelTimeFormat:null,autoclose:!1,minTime:-1/0,maxTime:+1/0,length:5,hourStep:1,minuteStep:5,iconUp:"glyphicon glyphicon-chevron-up",iconDown:"glyphicon glyphicon-chevron-down",arrowBehavior:"pager"};this.$get=["$window","$document","$rootScope","$sce","$locale","dateFilter","$tooltip",function(t,n,a,o,i,r,s){function l(t,n,a){function o(e,n){if(t[0].createTextRange){var a=t[0].createTextRange();a.collapse(!0),a.moveStart("character",e),a.moveEnd("character",n),a.select()}else t[0].setSelectionRange?t[0].setSelectionRange(e,n):angular.isUndefined(t[0].selectionStart)&&(t[0].selectionStart=e,t[0].selectionEnd=n)}function l(){t[0].focus()}var d=s(t,angular.extend({},e,a)),f=a.scope,p=d.$options,m=d.$scope,g=0,$=n.$dateValue||new Date,h={hour:$.getHours(),meridian:$.getHours()<12,minute:$.getMinutes(),second:$.getSeconds(),millisecond:$.getMilliseconds()},v=i.DATETIME_FORMATS[p.timeFormat]||p.timeFormat,y=/(h+)([:\.])?(m+)[ ]?(a?)/i.exec(v).slice(1);m.$iconUp=p.iconUp,m.$iconDown=p.iconDown,m.$select=function(e,t){d.select(e,t)},m.$moveIndex=function(e,t){d.$moveIndex(e,t)},m.$switchMeridian=function(e){d.switchMeridian(e)},d.update=function(e){angular.isDate(e)&&!isNaN(e.getTime())?(d.$date=e,angular.extend(h,{hour:e.getHours(),minute:e.getMinutes(),second:e.getSeconds(),millisecond:e.getMilliseconds()}),d.$build()):d.$isBuilt||d.$build()},d.select=function(e,t,a){(!n.$dateValue||isNaN(n.$dateValue.getTime()))&&(n.$dateValue=new Date(1970,0,1)),angular.isDate(e)||(e=new Date(e)),0===t?n.$dateValue.setHours(e.getHours()):1===t&&n.$dateValue.setMinutes(e.getMinutes()),n.$setViewValue(n.$dateValue),n.$render(),p.autoclose&&!a&&d.hide(!0)},d.switchMeridian=function(e){var t=(e||n.$dateValue).getHours();n.$dateValue.setHours(12>t?t+12:t-12),n.$setViewValue(n.$dateValue),n.$render()},d.$build=function(){var e,t,n=m.midIndex=parseInt(p.length/2,10),a=[];for(e=0;e1*p.maxTime},m.$arrowAction=function(e,t){"picker"===p.arrowBehavior?d.$setTimeByStep(e,t):d.$moveIndex(e,t)},d.$setTimeByStep=function(e,t){{var n=new Date(d.$date),a=n.getHours(),o=(r(n,"h").length,n.getMinutes());r(n,"mm").length}0===t?n.setHours(a-parseInt(p.hourStep,10)*e):n.setMinutes(o-parseInt(p.minuteStep,10)*e),d.select(n,t,!0),f.$digest()},d.$moveIndex=function(e,t){var n;0===t?(n=new Date(1970,0,1,h.hour+e*p.length,h.minute),angular.extend(h,{hour:n.getHours()})):1===t&&(n=new Date(1970,0,1,h.hour,h.minute+e*p.length*p.minuteStep),angular.extend(h,{minute:n.getMinutes()})),d.$build()},d.$onMouseDown=function(e){if("input"!==e.target.nodeName.toLowerCase()&&e.preventDefault(),e.stopPropagation(),c){var t=angular.element(e.target);"button"!==t[0].nodeName.toLowerCase()&&(t=t.parent()),t.triggerHandler("click")}},d.$onKeyDown=function(e){if(/(38|37|39|40|13)/.test(e.keyCode)&&!e.shiftKey&&!e.altKey){if(e.preventDefault(),e.stopPropagation(),13===e.keyCode)return d.hide(!0);var t=new Date(d.$date),n=t.getHours(),a=r(t,"h").length,i=t.getMinutes(),s=r(t,"mm").length,l=/(37|39)/.test(e.keyCode),u=2+1*!!y[3];l&&(37===e.keyCode?g=1>g?u-1:g-1:39===e.keyCode&&(g=u-1>g?g+1:0));var c=[0,a];0===g?(38===e.keyCode?t.setHours(n-parseInt(p.hourStep,10)):40===e.keyCode&&t.setHours(n+parseInt(p.hourStep,10)),c=[0,a]):1===g?(38===e.keyCode?t.setMinutes(i-parseInt(p.minuteStep,10)):40===e.keyCode&&t.setMinutes(i+parseInt(p.minuteStep,10)),c=[a+1,a+1+s]):2===g&&(l||d.switchMeridian(),c=[a+1+s+1,a+1+s+3]),d.select(t,g,!0),o(c[0],c[1]),f.$digest()}};var w=d.init;d.init=function(){return u&&p.useNative?(t.prop("type","time"),t.css("-webkit-appearance","textfield"),void 0):(c&&(t.prop("type","text"),t.attr("readonly","true"),t.on("click",l)),w(),void 0)};var b=d.destroy;d.destroy=function(){u&&p.useNative&&t.off("click",l),b()};var D=d.show;d.show=function(){D(),setTimeout(function(){d.$element.on(c?"touchstart":"mousedown",d.$onMouseDown),p.keyboard&&t.on("keydown",d.$onKeyDown)})};var k=d.hide;return d.hide=function(e){d.$element.off(c?"touchstart":"mousedown",d.$onMouseDown),p.keyboard&&t.off("keydown",d.$onKeyDown),k(e)},d}var u=(angular.element(t.document.body),/(ip(a|o)d|iphone|android)/gi.test(t.navigator.userAgent)),c="createTouch"in t.document&&u;return e.lang||(e.lang=i.id),l.defaults=e,l}]}).directive("bsTimepicker",["$window","$parse","$q","$locale","dateFilter","$timepicker","$dateParser","$timeout",function(e,t,n,a,o,i,r){{var s=i.defaults,l=/(ip(a|o)d|iphone|android)/gi.test(e.navigator.userAgent);e.requestAnimationFrame||e.setTimeout}return{restrict:"EAC",require:"ngModel",link:function(e,t,n,a){var u={scope:e,controller:a};angular.forEach(["placement","container","delay","trigger","keyboard","html","animation","template","autoclose","timeType","timeFormat","modelTimeFormat","useNative","hourStep","minuteStep","length","arrowBehavior"],function(e){angular.isDefined(n[e])&&(u[e]=n[e])}),n.bsShow&&e.$watch(n.bsShow,function(e){c&&angular.isDefined(e)&&(angular.isString(e)&&(e=!!e.match(",?(timepicker),?")),e===!0?c.show():c.hide())}),l&&(u.useNative||s.useNative)&&(u.timeFormat="HH:mm");var c=i(t,a,u);u=c.$options;var d=r({format:u.timeFormat,lang:u.lang});angular.forEach(["minTime","maxTime"],function(e){angular.isDefined(n[e])&&n.$observe(e,function(t){c.$options[e]="now"===t?(new Date).setFullYear(1970,0,1):angular.isString(t)&&t.match(/^".+"$/)?+new Date(t.substr(1,t.length-2)):d.parse(t,new Date(1970,0,1,0)),!isNaN(c.$options[e])&&c.$build()})}),e.$watch(n.ngModel,function(){c.update(a.$dateValue)},!0),a.$parsers.unshift(function(e){if(!e)return a.$setValidity("date",!0),void 0;var t=d.parse(e,a.$dateValue);if(!t||isNaN(t.getTime()))a.$setValidity("date",!1);else{var n=t.getTime()>=u.minTime&&t.getTime()<=u.maxTime;a.$setValidity("date",n),n&&(a.$dateValue=t)}return"string"===u.timeType?o(t,u.modelTimeFormat||u.timeFormat):"number"===u.timeType?a.$dateValue.getTime():"iso"===u.timeType?a.$dateValue.toISOString():new Date(a.$dateValue)}),a.$formatters.push(function(e){var t;return t=angular.isUndefined(e)||null===e?0/0:angular.isDate(e)?e:"string"===u.timeType?d.parse(e,null,u.modelTimeFormat):new Date(e),a.$dateValue=t,a.$dateValue}),a.$render=function(){t.val(!a.$dateValue||isNaN(a.$dateValue.getTime())?"":o(a.$dateValue,u.timeFormat))},e.$on("$destroy",function(){c&&c.destroy(),u=null,c=null})}}}]),angular.module("mgcrea.ngStrap.tooltip",["mgcrea.ngStrap.helpers.dimensions"]).provider("$tooltip",function(){var e=this.defaults={animation:"am-fade",customClass:"",prefixClass:"tooltip",prefixEvent:"tooltip",container:!1,target:!1,placement:"top",template:"tooltip/tooltip.tpl.html",contentTemplate:!1,trigger:"hover focus",keyboard:!1,html:!1,show:!1,title:"",type:"",delay:0};this.$get=["$window","$rootScope","$compile","$q","$templateCache","$http","$animate","dimensions","$$rAF",function(n,a,o,i,r,s,l,u,c){function d(t,n){function i(){return"body"===h.container?u.offset(h.target[0]||t[0]):u.position(h.target[0]||t[0])}function r(e,t,n,a){var o,i=e.split("-");switch(i[0]){case"right":o={top:t.top+t.height/2-a/2,left:t.left+t.width};break;case"bottom":o={top:t.top+t.height,left:t.left+t.width/2-n/2};break;case"left":o={top:t.top+t.height/2-a/2,left:t.left-n};break;default:o={top:t.top-a,left:t.left+t.width/2-n/2}}if(!i[1])return o;if("top"===i[0]||"bottom"===i[0])switch(i[1]){case"left":o.left=t.left;break;case"right":o.left=t.left+t.width-n}else if("left"===i[0]||"right"===i[0])switch(i[1]){case"top":o.top=t.top-a;break;case"bottom":o.top=t.top+t.height}return o}var s={},d=t[0].nodeName.toLowerCase(),h=s.$options=angular.extend({},e,n);s.$promise=p(h.template);var v=s.$scope=h.scope&&h.scope.$new()||a.$new();h.delay&&angular.isString(h.delay)&&(h.delay=parseFloat(h.delay)),h.title&&(s.$scope.title=h.title),v.$hide=function(){v.$$postDigest(function(){s.hide()})},v.$show=function(){v.$$postDigest(function(){s.show()})},v.$toggle=function(){v.$$postDigest(function(){s.toggle()})},s.$isShown=v.$isShown=!1;var y,w;h.contentTemplate&&(s.$promise=s.$promise.then(function(e){var t=angular.element(e);return p(h.contentTemplate).then(function(e){var n=f('[ng-bind="content"]',t[0]);return n.length||(n=f('[ng-bind="title"]',t[0])),n.removeAttr("ng-bind").html(e),t[0].outerHTML})}));var b,D,k,S;return s.$promise.then(function(e){angular.isObject(e)&&(e=e.data),h.html&&(e=e.replace($,'ng-bind-html="')),e=m.apply(e),k=e,b=o(e),s.init()}),s.init=function(){h.delay&&angular.isNumber(h.delay)&&(h.delay={show:h.delay,hide:h.delay}),"self"===h.container?S=t:angular.isElement(h.container)?S=h.container:h.container&&(S=f(h.container));var e=h.trigger.split(" ");angular.forEach(e,function(e){"click"===e?t.on("click",s.toggle):"manual"!==e&&(t.on("hover"===e?"mouseenter":"focus",s.enter),t.on("hover"===e?"mouseleave":"blur",s.leave),"button"===d&&"hover"!==e&&t.on(g?"touchstart":"mousedown",s.$onFocusElementMouseDown))}),h.target&&(h.target=angular.isElement(h.target)?h.target:f(h.target)),h.show&&v.$$postDigest(function(){"focus"===h.trigger?t[0].focus():s.show()})},s.destroy=function(){for(var e=h.trigger.split(" "),n=e.length;n--;){var a=e[n];"click"===a?t.off("click",s.toggle):"manual"!==a&&(t.off("hover"===a?"mouseenter":"focus",s.enter),t.off("hover"===a?"mouseleave":"blur",s.leave),"button"===d&&"hover"!==a&&t.off(g?"touchstart":"mousedown",s.$onFocusElementMouseDown))}D&&(D.remove(),D=null),clearTimeout(y),v.$destroy()},s.enter=function(){return clearTimeout(y),w="in",h.delay&&h.delay.show?(y=setTimeout(function(){"in"===w&&s.show()},h.delay.show),void 0):s.show()},s.show=function(){v.$emit(h.prefixEvent+".show.before",s);var e=h.container?S:null,n=h.container?null:t;D&&D.remove(),D=s.$element=b(v,function(){}),D.css({top:"-9999px",left:"-9999px",display:"block",visibility:"hidden"}).addClass(h.placement),h.animation&&D.addClass(h.animation),h.type&&D.addClass(h.prefixClass+"-"+h.type),h.customClass&&D.addClass(h.customClass),l.enter(D,e,n,function(){v.$emit(h.prefixEvent+".show",s)}),s.$isShown=v.$isShown=!0,v.$$phase||v.$root&&v.$root.$$phase||v.$digest(),c(function(){s.$applyPlacement(),D.css({visibility:"visible"})}),h.keyboard&&("focus"!==h.trigger?(s.focus(),D.on("keyup",s.$onKeyUp)):t.on("keyup",s.$onFocusKeyUp))},s.leave=function(){return clearTimeout(y),w="out",h.delay&&h.delay.hide?(y=setTimeout(function(){"out"===w&&s.hide()},h.delay.hide),void 0):s.hide()},s.hide=function(e){s.$isShown&&(v.$emit(h.prefixEvent+".hide.before",s),l.leave(D,function(){return v.$emit(h.prefixEvent+".hide",s),e&&"focus"===h.trigger?t[0].blur():void 0}),s.$isShown=v.$isShown=!1,v.$$phase||v.$root&&v.$root.$$phase||v.$digest(),h.keyboard&&null!==D&&D.off("keyup",s.$onKeyUp))},s.toggle=function(){s.$isShown?s.leave():s.enter()},s.focus=function(){D[0].focus()},s.$applyPlacement=function(){if(D){var e=i(),t=D.prop("offsetWidth"),n=D.prop("offsetHeight"),a=r(h.placement,e,t,n);a.top+="px",a.left+="px",D.css(a)}},s.$onKeyUp=function(e){27===e.which&&s.$isShown&&(s.hide(),e.stopPropagation())},s.$onFocusKeyUp=function(e){27===e.which&&(t[0].blur(),e.stopPropagation())},s.$onFocusElementMouseDown=function(e){e.preventDefault(),e.stopPropagation(),s.$isShown?t[0].blur():t[0].focus()},s}function f(e,n){return angular.element((n||t).querySelectorAll(e))}function p(e){return i.when(r.get(e)||s.get(e)).then(function(t){return angular.isObject(t)?(r.put(e,t.data),t.data):t})}var m=String.prototype.trim,g="createTouch"in n.document,$=/ng-bind="/gi;return d}]}).directive("bsTooltip",["$window","$location","$sce","$tooltip","$$rAF",function(e,t,n,a,o){return{restrict:"EAC",scope:!0,link:function(e,t,i){var r={scope:e};angular.forEach(["template","contentTemplate","placement","container","target","delay","trigger","keyboard","html","animation","type","customClass"],function(e){angular.isDefined(i[e])&&(r[e]=i[e])}),angular.forEach(["title"],function(t){i.$observe(t,function(a,i){e[t]=n.trustAsHtml(a),angular.isDefined(i)&&o(function(){s&&s.$applyPlacement()})})}),i.bsTooltip&&e.$watch(i.bsTooltip,function(t,n){angular.isObject(t)?angular.extend(e,t):e.title=t,angular.isDefined(n)&&o(function(){s&&s.$applyPlacement()})},!0),i.bsShow&&e.$watch(i.bsShow,function(e){s&&angular.isDefined(e)&&(angular.isString(e)&&(e=!!e.match(",?(tooltip),?")),e===!0?s.show():s.hide())});var s=a(t,r);e.$on("$destroy",function(){s&&s.destroy(),r=null,s=null})}}}]),angular.module("mgcrea.ngStrap.typeahead",["mgcrea.ngStrap.tooltip","mgcrea.ngStrap.helpers.parseOptions"]).provider("$typeahead",function(){var e=this.defaults={animation:"am-fade",prefixClass:"typeahead",prefixEvent:"$typeahead",placement:"bottom-left",template:"typeahead/typeahead.tpl.html",trigger:"focus",container:!1,keyboard:!0,html:!1,delay:0,minLength:1,filter:"filter",limit:6};this.$get=["$window","$rootScope","$tooltip",function(t,n,a){function o(t,n,o){var i={},r=angular.extend({},e,o);i=a(t,r);var s=o.scope,l=i.$scope;l.$resetMatches=function(){l.$matches=[],l.$activeIndex=0},l.$resetMatches(),l.$activate=function(e){l.$$postDigest(function(){i.activate(e)})},l.$select=function(e){l.$$postDigest(function(){i.select(e)})},l.$isVisible=function(){return i.$isVisible()},i.update=function(e){l.$matches=e,l.$activeIndex>=e.length&&(l.$activeIndex=0)},i.activate=function(e){l.$activeIndex=e},i.select=function(e){var t=l.$matches[e].value;n.$setViewValue(t),n.$render(),l.$resetMatches(),s&&s.$digest(),l.$emit(r.prefixEvent+".select",t,e)},i.$isVisible=function(){return r.minLength&&n?l.$matches.length&&angular.isString(n.$viewValue)&&n.$viewValue.length>=r.minLength:!!l.$matches.length},i.$getIndex=function(e){var t=l.$matches.length,n=t;if(t){for(n=t;n--&&l.$matches[n].value!==e;);if(!(0>n))return n}},i.$onMouseDown=function(e){e.preventDefault(),e.stopPropagation()},i.$onKeyDown=function(e){/(38|40|13)/.test(e.keyCode)&&(i.$isVisible()&&(e.preventDefault(),e.stopPropagation()),13===e.keyCode&&l.$matches.length?i.select(l.$activeIndex):38===e.keyCode&&l.$activeIndex>0?l.$activeIndex--:40===e.keyCode&&l.$activeIndex0)return r.$setViewValue(r.$viewValue.substring(0,r.$viewValue.length-1)),void 0;e.length>u&&(e=e.slice(0,u));var n=f.$isVisible();n&&f.update(e),(1!==e.length||e[0].value!==t)&&(!n&&f.update(e),r.$render())})}),r.$render=function(){if(r.$isEmpty(r.$viewValue))return t.val("");var e=f.$getIndex(r.$modelValue),n=angular.isDefined(e)?f.$scope.$matches[e].label:r.$viewValue;n=angular.isObject(n)?n.label:n,t.val(n.replace(/<(?:.|\n)*?>/gm,"").trim())},e.$on("$destroy",function(){f&&f.destroy(),s=null,f=null})}}}])}(window,document); \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-strap_2.0.5/angular-strap.tpl.min.js b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-strap_2.0.5/angular-strap.tpl.min.js new file mode 100644 index 000000000..a01fd9026 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-strap_2.0.5/angular-strap.tpl.min.js @@ -0,0 +1,8 @@ +/** + * angular-strap + * @version v2.0.5 - 2014-09-03 + * @link http://mgcrea.github.io/angular-strap + * @author Olivier Louvignes (olivier@mg-crea.com) + * @license MIT License, http://www.opensource.org/licenses/MIT + */ +!function(){"use strict";angular.module("mgcrea.ngStrap.alert").run(["$templateCache",function(t){t.put("alert/alert.tpl.html",'
       
      ')}]),angular.module("mgcrea.ngStrap.aside").run(["$templateCache",function(t){t.put("aside/aside.tpl.html",'')}]),angular.module("mgcrea.ngStrap.datepicker").run(["$templateCache",function(t){t.put("datepicker/datepicker.tpl.html",'')}]),angular.module("mgcrea.ngStrap.dropdown").run(["$templateCache",function(t){t.put("dropdown/dropdown.tpl.html",'')}]),angular.module("mgcrea.ngStrap.modal").run(["$templateCache",function(t){t.put("modal/modal.tpl.html",'')}]),angular.module("mgcrea.ngStrap.popover").run(["$templateCache",function(t){t.put("popover/popover.tpl.html",'

      ')}]),angular.module("mgcrea.ngStrap.select").run(["$templateCache",function(t){t.put("select/select.tpl.html",'')}]),angular.module("mgcrea.ngStrap.tab").run(["$templateCache",function(t){t.put("tab/tab.tpl.html",'
      ')}]),angular.module("mgcrea.ngStrap.timepicker").run(["$templateCache",function(t){t.put("timepicker/timepicker.tpl.html",'')}]),angular.module("mgcrea.ngStrap.tooltip").run(["$templateCache",function(t){t.put("tooltip/tooltip.tpl.html",'
      ')}]),angular.module("mgcrea.ngStrap.typeahead").run(["$templateCache",function(t){t.put("typeahead/typeahead.tpl.html",'')}])}(window,document); \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/.bower.json b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/.bower.json new file mode 100644 index 000000000..d2b66a992 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/.bower.json @@ -0,0 +1,19 @@ +{ + "name": "angular-translate-loader-static-files", + "version": "0.1.6", + "main": "./angular-translate-loader-static-files.js", + "dependencies": { + "angular": "1.0.8", + "angular-translate": "~1.1.1" + }, + "homepage": "https://github.com/PascalPrecht/bower-angular-translate-loader-static-files", + "_release": "0.1.6", + "_resolution": { + "type": "version", + "tag": "0.1.6", + "commit": "eaac546d29d6cde45873e6bad9d18cdff071d983" + }, + "_source": "git://github.com/PascalPrecht/bower-angular-translate-loader-static-files.git", + "_target": "0.1.6", + "_originalSource": "angular-translate-loader-static-files" +} \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js new file mode 100644 index 000000000..ee3303eb8 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js @@ -0,0 +1,31 @@ +/*! + * angular-translate - v2.4.2 - 2014-10-21 + * http://github.com/angular-translate/angular-translate + * Copyright (c) 2014 ; Licensed MIT + */ +angular.module('pascalprecht.translate').factory('$translateStaticFilesLoader', [ + '$q', + '$http', + function ($q, $http) { + return function (options) { + if (!options || (!angular.isString(options.prefix) || !angular.isString(options.suffix))) { + throw new Error('Couldn\'t load static files, no prefix or suffix specified!'); + } + var deferred = $q.defer(); + $http(angular.extend({ + url: [ + options.prefix, + options.key, + options.suffix + ].join(''), + method: 'GET', + params: '' + }, options.$http)).success(function (data) { + deferred.resolve(data); + }).error(function (data) { + deferred.reject(options.key); + }); + return deferred.promise; + }; + } +]); \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js new file mode 100644 index 000000000..c8938bde4 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js @@ -0,0 +1,6 @@ +/*! + * angular-translate - v2.4.2 - 2014-10-21 + * http://github.com/angular-translate/angular-translate + * Copyright (c) 2014 ; Licensed MIT + */ +angular.module("pascalprecht.translate").factory("$translateStaticFilesLoader",["$q","$http",function(a,b){return function(c){if(!c||!angular.isString(c.prefix)||!angular.isString(c.suffix))throw new Error("Couldn't load static files, no prefix or suffix specified!");var d=a.defer();return b(angular.extend({url:[c.prefix,c.key,c.suffix].join(""),method:"GET",params:""},c.$http)).success(function(a){d.resolve(a)}).error(function(){d.reject(c.key)}),d.promise}}]); \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/.bower.json b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/.bower.json new file mode 100644 index 000000000..39d2dcec3 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/.bower.json @@ -0,0 +1,20 @@ +{ + "name": "angular-translate-storage-cookie", + "version": "0.1.6", + "main": "./angular-translate-storage-cookie.js", + "dependencies": { + "angular": "1.0.8", + "angular-cookies": "1.0.8", + "angular-translate": "~1.1.1" + }, + "homepage": "https://github.com/PascalPrecht/bower-angular-translate-storage-cookie", + "_release": "0.1.6", + "_resolution": { + "type": "version", + "tag": "0.1.6", + "commit": "fc9ea3275f0f9bf0a60ca073b58488d934a348ac" + }, + "_source": "git://github.com/PascalPrecht/bower-angular-translate-storage-cookie.git", + "_target": "0.1.6", + "_originalSource": "angular-translate-storage-cookie" +} \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js new file mode 100644 index 000000000..34f180b29 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js @@ -0,0 +1,19 @@ +/*! + * angular-translate - v2.4.2 - 2014-10-21 + * http://github.com/angular-translate/angular-translate + * Copyright (c) 2014 ; Licensed MIT + */ +angular.module('pascalprecht.translate').factory('$translateCookieStorage', [ + '$cookieStore', + function ($cookieStore) { + var $translateCookieStorage = { + get: function (name) { + return $cookieStore.get(name); + }, + set: function (name, value) { + $cookieStore.put(name, value); + } + }; + return $translateCookieStorage; + } +]); \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js new file mode 100644 index 000000000..66f0b9296 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js @@ -0,0 +1,6 @@ +/*! + * angular-translate - v2.4.2 - 2014-10-21 + * http://github.com/angular-translate/angular-translate + * Copyright (c) 2014 ; Licensed MIT + */ +angular.module("pascalprecht.translate").factory("$translateCookieStorage",["$cookieStore",function(a){var b={get:function(b){return a.get(b)},set:function(b,c){a.put(b,c)}};return b}]); \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate_2.4.2/angular-translate.js b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate_2.4.2/angular-translate.js new file mode 100644 index 000000000..46bcb55fd --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate_2.4.2/angular-translate.js @@ -0,0 +1,960 @@ +/*! + * angular-translate - v2.4.2 - 2014-10-21 + * http://github.com/angular-translate/angular-translate + * Copyright (c) 2014 ; Licensed MIT + */ +angular.module('pascalprecht.translate', ['ng']).run([ + '$translate', + function ($translate) { + var key = $translate.storageKey(), storage = $translate.storage(); + if (storage) { + if (!storage.get(key)) { + if (angular.isString($translate.preferredLanguage())) { + $translate.use($translate.preferredLanguage()); + } else { + storage.set(key, $translate.use()); + } + } else { + $translate.use(storage.get(key)); + } + } else if (angular.isString($translate.preferredLanguage())) { + $translate.use($translate.preferredLanguage()); + } + } +]); +angular.module('pascalprecht.translate').provider('$translate', [ + '$STORAGE_KEY', + function ($STORAGE_KEY) { + var $translationTable = {}, $preferredLanguage, $availableLanguageKeys = [], $languageKeyAliases, $fallbackLanguage, $fallbackWasString, $uses, $nextLang, $storageFactory, $storageKey = $STORAGE_KEY, $storagePrefix, $missingTranslationHandlerFactory, $interpolationFactory, $interpolatorFactories = [], $interpolationSanitizationStrategy = false, $loaderFactory, $cloakClassName = 'translate-cloak', $loaderOptions, $notFoundIndicatorLeft, $notFoundIndicatorRight, $postCompilingEnabled = false, NESTED_OBJECT_DELIMITER = '.', loaderCache; + var version = '2.4.2'; + var getLocale = function () { + var nav = window.navigator; + return ((angular.isArray(nav.languages) ? nav.languages[0] : nav.language || nav.browserLanguage || nav.systemLanguage || nav.userLanguage) || '').split('-').join('_'); + }; + var indexOf = function (array, searchElement) { + for (var i = 0, len = array.length; i < len; i++) { + if (array[i] === searchElement) { + return i; + } + } + return -1; + }; + var trim = function () { + return this.replace(/^\s+|\s+$/g, ''); + }; + var negotiateLocale = function (preferred) { + var avail = [], locale = angular.lowercase(preferred), i = 0, n = $availableLanguageKeys.length; + for (; i < n; i++) { + avail.push(angular.lowercase($availableLanguageKeys[i])); + } + if (indexOf(avail, locale) > -1) { + return preferred; + } + if ($languageKeyAliases) { + var alias; + for (var langKeyAlias in $languageKeyAliases) { + var hasWildcardKey = false; + var hasExactKey = Object.prototype.hasOwnProperty.call($languageKeyAliases, langKeyAlias) && angular.lowercase(langKeyAlias) === angular.lowercase(preferred); + if (langKeyAlias.slice(-1) === '*') { + hasWildcardKey = langKeyAlias.slice(0, -1) === preferred.slice(0, langKeyAlias.length - 1); + } + if (hasExactKey || hasWildcardKey) { + alias = $languageKeyAliases[langKeyAlias]; + if (indexOf(avail, angular.lowercase(alias)) > -1) { + return alias; + } + } + } + } + var parts = preferred.split('_'); + if (parts.length > 1 && indexOf(avail, angular.lowercase(parts[0])) > -1) { + return parts[0]; + } + return preferred; + }; + var translations = function (langKey, translationTable) { + if (!langKey && !translationTable) { + return $translationTable; + } + if (langKey && !translationTable) { + if (angular.isString(langKey)) { + return $translationTable[langKey]; + } + } else { + if (!angular.isObject($translationTable[langKey])) { + $translationTable[langKey] = {}; + } + angular.extend($translationTable[langKey], flatObject(translationTable)); + } + return this; + }; + this.translations = translations; + this.cloakClassName = function (name) { + if (!name) { + return $cloakClassName; + } + $cloakClassName = name; + return this; + }; + var flatObject = function (data, path, result, prevKey) { + var key, keyWithPath, keyWithShortPath, val; + if (!path) { + path = []; + } + if (!result) { + result = {}; + } + for (key in data) { + if (!Object.prototype.hasOwnProperty.call(data, key)) { + continue; + } + val = data[key]; + if (angular.isObject(val)) { + flatObject(val, path.concat(key), result, key); + } else { + keyWithPath = path.length ? '' + path.join(NESTED_OBJECT_DELIMITER) + NESTED_OBJECT_DELIMITER + key : key; + if (path.length && key === prevKey) { + keyWithShortPath = '' + path.join(NESTED_OBJECT_DELIMITER); + result[keyWithShortPath] = '@:' + keyWithPath; + } + result[keyWithPath] = val; + } + } + return result; + }; + this.addInterpolation = function (factory) { + $interpolatorFactories.push(factory); + return this; + }; + this.useMessageFormatInterpolation = function () { + return this.useInterpolation('$translateMessageFormatInterpolation'); + }; + this.useInterpolation = function (factory) { + $interpolationFactory = factory; + return this; + }; + this.useSanitizeValueStrategy = function (value) { + $interpolationSanitizationStrategy = value; + return this; + }; + this.preferredLanguage = function (langKey) { + setupPreferredLanguage(langKey); + return this; + }; + var setupPreferredLanguage = function (langKey) { + if (langKey) { + $preferredLanguage = langKey; + } + return $preferredLanguage; + }; + this.translationNotFoundIndicator = function (indicator) { + this.translationNotFoundIndicatorLeft(indicator); + this.translationNotFoundIndicatorRight(indicator); + return this; + }; + this.translationNotFoundIndicatorLeft = function (indicator) { + if (!indicator) { + return $notFoundIndicatorLeft; + } + $notFoundIndicatorLeft = indicator; + return this; + }; + this.translationNotFoundIndicatorRight = function (indicator) { + if (!indicator) { + return $notFoundIndicatorRight; + } + $notFoundIndicatorRight = indicator; + return this; + }; + this.fallbackLanguage = function (langKey) { + fallbackStack(langKey); + return this; + }; + var fallbackStack = function (langKey) { + if (langKey) { + if (angular.isString(langKey)) { + $fallbackWasString = true; + $fallbackLanguage = [langKey]; + } else if (angular.isArray(langKey)) { + $fallbackWasString = false; + $fallbackLanguage = langKey; + } + if (angular.isString($preferredLanguage) && indexOf($fallbackLanguage, $preferredLanguage) < 0) { + $fallbackLanguage.push($preferredLanguage); + } + return this; + } else { + if ($fallbackWasString) { + return $fallbackLanguage[0]; + } else { + return $fallbackLanguage; + } + } + }; + this.use = function (langKey) { + if (langKey) { + if (!$translationTable[langKey] && !$loaderFactory) { + throw new Error('$translateProvider couldn\'t find translationTable for langKey: \'' + langKey + '\''); + } + $uses = langKey; + return this; + } + return $uses; + }; + var storageKey = function (key) { + if (!key) { + if ($storagePrefix) { + return $storagePrefix + $storageKey; + } + return $storageKey; + } + $storageKey = key; + }; + this.storageKey = storageKey; + this.useUrlLoader = function (url, options) { + return this.useLoader('$translateUrlLoader', angular.extend({ url: url }, options)); + }; + this.useStaticFilesLoader = function (options) { + return this.useLoader('$translateStaticFilesLoader', options); + }; + this.useLoader = function (loaderFactory, options) { + $loaderFactory = loaderFactory; + $loaderOptions = options || {}; + return this; + }; + this.useLocalStorage = function () { + return this.useStorage('$translateLocalStorage'); + }; + this.useCookieStorage = function () { + return this.useStorage('$translateCookieStorage'); + }; + this.useStorage = function (storageFactory) { + $storageFactory = storageFactory; + return this; + }; + this.storagePrefix = function (prefix) { + if (!prefix) { + return prefix; + } + $storagePrefix = prefix; + return this; + }; + this.useMissingTranslationHandlerLog = function () { + return this.useMissingTranslationHandler('$translateMissingTranslationHandlerLog'); + }; + this.useMissingTranslationHandler = function (factory) { + $missingTranslationHandlerFactory = factory; + return this; + }; + this.usePostCompiling = function (value) { + $postCompilingEnabled = !!value; + return this; + }; + this.determinePreferredLanguage = function (fn) { + var locale = fn && angular.isFunction(fn) ? fn() : getLocale(); + if (!$availableLanguageKeys.length) { + $preferredLanguage = locale; + } else { + $preferredLanguage = negotiateLocale(locale); + } + return this; + }; + this.registerAvailableLanguageKeys = function (languageKeys, aliases) { + if (languageKeys) { + $availableLanguageKeys = languageKeys; + if (aliases) { + $languageKeyAliases = aliases; + } + return this; + } + return $availableLanguageKeys; + }; + this.useLoaderCache = function (cache) { + if (cache === false) { + loaderCache = undefined; + } else if (cache === true) { + loaderCache = true; + } else if (typeof cache === 'undefined') { + loaderCache = '$translationCache'; + } else if (cache) { + loaderCache = cache; + } + return this; + }; + this.$get = [ + '$log', + '$injector', + '$rootScope', + '$q', + function ($log, $injector, $rootScope, $q) { + var Storage, defaultInterpolator = $injector.get($interpolationFactory || '$translateDefaultInterpolation'), pendingLoader = false, interpolatorHashMap = {}, langPromises = {}, fallbackIndex, startFallbackIteration; + var $translate = function (translationId, interpolateParams, interpolationId) { + if (angular.isArray(translationId)) { + var translateAll = function (translationIds) { + var results = {}; + var promises = []; + var translate = function (translationId) { + var deferred = $q.defer(); + var regardless = function (value) { + results[translationId] = value; + deferred.resolve([ + translationId, + value + ]); + }; + $translate(translationId, interpolateParams, interpolationId).then(regardless, regardless); + return deferred.promise; + }; + for (var i = 0, c = translationIds.length; i < c; i++) { + promises.push(translate(translationIds[i])); + } + return $q.all(promises).then(function () { + return results; + }); + }; + return translateAll(translationId); + } + var deferred = $q.defer(); + if (translationId) { + translationId = trim.apply(translationId); + } + var promiseToWaitFor = function () { + var promise = $preferredLanguage ? langPromises[$preferredLanguage] : langPromises[$uses]; + fallbackIndex = 0; + if ($storageFactory && !promise) { + var langKey = Storage.get($storageKey); + promise = langPromises[langKey]; + if ($fallbackLanguage && $fallbackLanguage.length) { + var index = indexOf($fallbackLanguage, langKey); + fallbackIndex = index === 0 ? 1 : 0; + if (indexOf($fallbackLanguage, $preferredLanguage) < 0) { + $fallbackLanguage.push($preferredLanguage); + } + } + } + return promise; + }(); + if (!promiseToWaitFor) { + determineTranslation(translationId, interpolateParams, interpolationId).then(deferred.resolve, deferred.reject); + } else { + promiseToWaitFor.then(function () { + determineTranslation(translationId, interpolateParams, interpolationId).then(deferred.resolve, deferred.reject); + }, deferred.reject); + } + return deferred.promise; + }; + var applyNotFoundIndicators = function (translationId) { + if ($notFoundIndicatorLeft) { + translationId = [ + $notFoundIndicatorLeft, + translationId + ].join(' '); + } + if ($notFoundIndicatorRight) { + translationId = [ + translationId, + $notFoundIndicatorRight + ].join(' '); + } + return translationId; + }; + var useLanguage = function (key) { + $uses = key; + $rootScope.$emit('$translateChangeSuccess', { language: key }); + if ($storageFactory) { + Storage.set($translate.storageKey(), $uses); + } + defaultInterpolator.setLocale($uses); + angular.forEach(interpolatorHashMap, function (interpolator, id) { + interpolatorHashMap[id].setLocale($uses); + }); + $rootScope.$emit('$translateChangeEnd', { language: key }); + }; + var loadAsync = function (key) { + if (!key) { + throw 'No language key specified for loading.'; + } + var deferred = $q.defer(); + $rootScope.$emit('$translateLoadingStart', { language: key }); + pendingLoader = true; + var cache = loaderCache; + if (typeof cache === 'string') { + cache = $injector.get(cache); + } + var loaderOptions = angular.extend({}, $loaderOptions, { + key: key, + $http: angular.extend({}, { cache: cache }, $loaderOptions.$http) + }); + $injector.get($loaderFactory)(loaderOptions).then(function (data) { + var translationTable = {}; + $rootScope.$emit('$translateLoadingSuccess', { language: key }); + if (angular.isArray(data)) { + angular.forEach(data, function (table) { + angular.extend(translationTable, flatObject(table)); + }); + } else { + angular.extend(translationTable, flatObject(data)); + } + pendingLoader = false; + deferred.resolve({ + key: key, + table: translationTable + }); + $rootScope.$emit('$translateLoadingEnd', { language: key }); + }, function (key) { + $rootScope.$emit('$translateLoadingError', { language: key }); + deferred.reject(key); + $rootScope.$emit('$translateLoadingEnd', { language: key }); + }); + return deferred.promise; + }; + if ($storageFactory) { + Storage = $injector.get($storageFactory); + if (!Storage.get || !Storage.set) { + throw new Error('Couldn\'t use storage \'' + $storageFactory + '\', missing get() or set() method!'); + } + } + if (angular.isFunction(defaultInterpolator.useSanitizeValueStrategy)) { + defaultInterpolator.useSanitizeValueStrategy($interpolationSanitizationStrategy); + } + if ($interpolatorFactories.length) { + angular.forEach($interpolatorFactories, function (interpolatorFactory) { + var interpolator = $injector.get(interpolatorFactory); + interpolator.setLocale($preferredLanguage || $uses); + if (angular.isFunction(interpolator.useSanitizeValueStrategy)) { + interpolator.useSanitizeValueStrategy($interpolationSanitizationStrategy); + } + interpolatorHashMap[interpolator.getInterpolationIdentifier()] = interpolator; + }); + } + var getTranslationTable = function (langKey) { + var deferred = $q.defer(); + if (Object.prototype.hasOwnProperty.call($translationTable, langKey)) { + deferred.resolve($translationTable[langKey]); + } else if (langPromises[langKey]) { + langPromises[langKey].then(function (data) { + translations(data.key, data.table); + deferred.resolve(data.table); + }, deferred.reject); + } else { + deferred.reject(); + } + return deferred.promise; + }; + var getFallbackTranslation = function (langKey, translationId, interpolateParams, Interpolator) { + var deferred = $q.defer(); + getTranslationTable(langKey).then(function (translationTable) { + if (Object.prototype.hasOwnProperty.call(translationTable, translationId)) { + Interpolator.setLocale(langKey); + deferred.resolve(Interpolator.interpolate(translationTable[translationId], interpolateParams)); + Interpolator.setLocale($uses); + } else { + deferred.reject(); + } + }, deferred.reject); + return deferred.promise; + }; + var getFallbackTranslationInstant = function (langKey, translationId, interpolateParams, Interpolator) { + var result, translationTable = $translationTable[langKey]; + if (Object.prototype.hasOwnProperty.call(translationTable, translationId)) { + Interpolator.setLocale(langKey); + result = Interpolator.interpolate(translationTable[translationId], interpolateParams); + Interpolator.setLocale($uses); + } + return result; + }; + var translateByHandler = function (translationId) { + if ($missingTranslationHandlerFactory) { + var resultString = $injector.get($missingTranslationHandlerFactory)(translationId, $uses); + if (resultString !== undefined) { + return resultString; + } else { + return translationId; + } + } else { + return translationId; + } + }; + var resolveForFallbackLanguage = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator) { + var deferred = $q.defer(); + if (fallbackLanguageIndex < $fallbackLanguage.length) { + var langKey = $fallbackLanguage[fallbackLanguageIndex]; + getFallbackTranslation(langKey, translationId, interpolateParams, Interpolator).then(deferred.resolve, function () { + resolveForFallbackLanguage(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator).then(deferred.resolve); + }); + } else { + deferred.resolve(translateByHandler(translationId)); + } + return deferred.promise; + }; + var resolveForFallbackLanguageInstant = function (fallbackLanguageIndex, translationId, interpolateParams, Interpolator) { + var result; + if (fallbackLanguageIndex < $fallbackLanguage.length) { + var langKey = $fallbackLanguage[fallbackLanguageIndex]; + result = getFallbackTranslationInstant(langKey, translationId, interpolateParams, Interpolator); + if (!result) { + result = resolveForFallbackLanguageInstant(fallbackLanguageIndex + 1, translationId, interpolateParams, Interpolator); + } + } + return result; + }; + var fallbackTranslation = function (translationId, interpolateParams, Interpolator) { + return resolveForFallbackLanguage(startFallbackIteration > 0 ? startFallbackIteration : fallbackIndex, translationId, interpolateParams, Interpolator); + }; + var fallbackTranslationInstant = function (translationId, interpolateParams, Interpolator) { + return resolveForFallbackLanguageInstant(startFallbackIteration > 0 ? startFallbackIteration : fallbackIndex, translationId, interpolateParams, Interpolator); + }; + var determineTranslation = function (translationId, interpolateParams, interpolationId) { + var deferred = $q.defer(); + var table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator; + if (table && Object.prototype.hasOwnProperty.call(table, translationId)) { + var translation = table[translationId]; + if (translation.substr(0, 2) === '@:') { + $translate(translation.substr(2), interpolateParams, interpolationId).then(deferred.resolve, deferred.reject); + } else { + deferred.resolve(Interpolator.interpolate(translation, interpolateParams)); + } + } else { + var missingTranslationHandlerTranslation; + if ($missingTranslationHandlerFactory && !pendingLoader) { + missingTranslationHandlerTranslation = translateByHandler(translationId); + } + if ($uses && $fallbackLanguage && $fallbackLanguage.length) { + fallbackTranslation(translationId, interpolateParams, Interpolator).then(function (translation) { + deferred.resolve(translation); + }, function (_translationId) { + deferred.reject(applyNotFoundIndicators(_translationId)); + }); + } else if ($missingTranslationHandlerFactory && !pendingLoader && missingTranslationHandlerTranslation) { + deferred.resolve(missingTranslationHandlerTranslation); + } else { + deferred.reject(applyNotFoundIndicators(translationId)); + } + } + return deferred.promise; + }; + var determineTranslationInstant = function (translationId, interpolateParams, interpolationId) { + var result, table = $uses ? $translationTable[$uses] : $translationTable, Interpolator = interpolationId ? interpolatorHashMap[interpolationId] : defaultInterpolator; + if (table && Object.prototype.hasOwnProperty.call(table, translationId)) { + var translation = table[translationId]; + if (translation.substr(0, 2) === '@:') { + result = determineTranslationInstant(translation.substr(2), interpolateParams, interpolationId); + } else { + result = Interpolator.interpolate(translation, interpolateParams); + } + } else { + var missingTranslationHandlerTranslation; + if ($missingTranslationHandlerFactory && !pendingLoader) { + missingTranslationHandlerTranslation = translateByHandler(translationId); + } + if ($uses && $fallbackLanguage && $fallbackLanguage.length) { + fallbackIndex = 0; + result = fallbackTranslationInstant(translationId, interpolateParams, Interpolator); + } else if ($missingTranslationHandlerFactory && !pendingLoader && missingTranslationHandlerTranslation) { + result = missingTranslationHandlerTranslation; + } else { + result = applyNotFoundIndicators(translationId); + } + } + return result; + }; + $translate.preferredLanguage = function (langKey) { + if (langKey) { + setupPreferredLanguage(langKey); + } + return $preferredLanguage; + }; + $translate.cloakClassName = function () { + return $cloakClassName; + }; + $translate.fallbackLanguage = function (langKey) { + if (langKey !== undefined && langKey !== null) { + fallbackStack(langKey); + if ($loaderFactory) { + if ($fallbackLanguage && $fallbackLanguage.length) { + for (var i = 0, len = $fallbackLanguage.length; i < len; i++) { + if (!langPromises[$fallbackLanguage[i]]) { + langPromises[$fallbackLanguage[i]] = loadAsync($fallbackLanguage[i]); + } + } + } + } + $translate.use($translate.use()); + } + if ($fallbackWasString) { + return $fallbackLanguage[0]; + } else { + return $fallbackLanguage; + } + }; + $translate.useFallbackLanguage = function (langKey) { + if (langKey !== undefined && langKey !== null) { + if (!langKey) { + startFallbackIteration = 0; + } else { + var langKeyPosition = indexOf($fallbackLanguage, langKey); + if (langKeyPosition > -1) { + startFallbackIteration = langKeyPosition; + } + } + } + }; + $translate.proposedLanguage = function () { + return $nextLang; + }; + $translate.storage = function () { + return Storage; + }; + $translate.use = function (key) { + if (!key) { + return $uses; + } + var deferred = $q.defer(); + $rootScope.$emit('$translateChangeStart', { language: key }); + var aliasedKey = negotiateLocale(key); + if (aliasedKey) { + key = aliasedKey; + } + if (!$translationTable[key] && $loaderFactory && !langPromises[key]) { + $nextLang = key; + langPromises[key] = loadAsync(key).then(function (translation) { + translations(translation.key, translation.table); + deferred.resolve(translation.key); + useLanguage(translation.key); + if ($nextLang === key) { + $nextLang = undefined; + } + }, function (key) { + if ($nextLang === key) { + $nextLang = undefined; + } + $rootScope.$emit('$translateChangeError', { language: key }); + deferred.reject(key); + $rootScope.$emit('$translateChangeEnd', { language: key }); + }); + } else { + deferred.resolve(key); + useLanguage(key); + } + return deferred.promise; + }; + $translate.storageKey = function () { + return storageKey(); + }; + $translate.isPostCompilingEnabled = function () { + return $postCompilingEnabled; + }; + $translate.refresh = function (langKey) { + if (!$loaderFactory) { + throw new Error('Couldn\'t refresh translation table, no loader registered!'); + } + var deferred = $q.defer(); + function resolve() { + deferred.resolve(); + $rootScope.$emit('$translateRefreshEnd', { language: langKey }); + } + function reject() { + deferred.reject(); + $rootScope.$emit('$translateRefreshEnd', { language: langKey }); + } + $rootScope.$emit('$translateRefreshStart', { language: langKey }); + if (!langKey) { + var tables = [], loadingKeys = {}; + if ($fallbackLanguage && $fallbackLanguage.length) { + for (var i = 0, len = $fallbackLanguage.length; i < len; i++) { + tables.push(loadAsync($fallbackLanguage[i])); + loadingKeys[$fallbackLanguage[i]] = true; + } + } + if ($uses && !loadingKeys[$uses]) { + tables.push(loadAsync($uses)); + } + $q.all(tables).then(function (tableData) { + angular.forEach(tableData, function (data) { + if ($translationTable[data.key]) { + delete $translationTable[data.key]; + } + translations(data.key, data.table); + }); + if ($uses) { + useLanguage($uses); + } + resolve(); + }); + } else if ($translationTable[langKey]) { + loadAsync(langKey).then(function (data) { + translations(data.key, data.table); + if (langKey === $uses) { + useLanguage($uses); + } + resolve(); + }, reject); + } else { + reject(); + } + return deferred.promise; + }; + $translate.instant = function (translationId, interpolateParams, interpolationId) { + if (translationId === null || angular.isUndefined(translationId)) { + return translationId; + } + if (angular.isArray(translationId)) { + var results = {}; + for (var i = 0, c = translationId.length; i < c; i++) { + results[translationId[i]] = $translate.instant(translationId[i], interpolateParams, interpolationId); + } + return results; + } + if (angular.isString(translationId) && translationId.length < 1) { + return translationId; + } + if (translationId) { + translationId = trim.apply(translationId); + } + var result, possibleLangKeys = []; + if ($preferredLanguage) { + possibleLangKeys.push($preferredLanguage); + } + if ($uses) { + possibleLangKeys.push($uses); + } + if ($fallbackLanguage && $fallbackLanguage.length) { + possibleLangKeys = possibleLangKeys.concat($fallbackLanguage); + } + for (var j = 0, d = possibleLangKeys.length; j < d; j++) { + var possibleLangKey = possibleLangKeys[j]; + if ($translationTable[possibleLangKey]) { + if (typeof $translationTable[possibleLangKey][translationId] !== 'undefined') { + result = determineTranslationInstant(translationId, interpolateParams, interpolationId); + } + } + if (typeof result !== 'undefined') { + break; + } + } + if (!result && result !== '') { + result = defaultInterpolator.interpolate(translationId, interpolateParams); + if ($missingTranslationHandlerFactory && !pendingLoader) { + result = translateByHandler(translationId); + } + } + return result; + }; + $translate.versionInfo = function () { + return version; + }; + $translate.loaderCache = function () { + return loaderCache; + }; + if ($loaderFactory) { + if (angular.equals($translationTable, {})) { + $translate.use($translate.use()); + } + if ($fallbackLanguage && $fallbackLanguage.length) { + var processAsyncResult = function (translation) { + translations(translation.key, translation.table); + $rootScope.$emit('$translateChangeEnd', { language: translation.key }); + }; + for (var i = 0, len = $fallbackLanguage.length; i < len; i++) { + langPromises[$fallbackLanguage[i]] = loadAsync($fallbackLanguage[i]).then(processAsyncResult); + } + } + } + return $translate; + } + ]; + } +]); +angular.module('pascalprecht.translate').factory('$translateDefaultInterpolation', [ + '$interpolate', + function ($interpolate) { + var $translateInterpolator = {}, $locale, $identifier = 'default', $sanitizeValueStrategy = null, sanitizeValueStrategies = { + escaped: function (params) { + var result = {}; + for (var key in params) { + if (Object.prototype.hasOwnProperty.call(params, key)) { + result[key] = angular.element('
      ').text(params[key]).html(); + } + } + return result; + } + }; + var sanitizeParams = function (params) { + var result; + if (angular.isFunction(sanitizeValueStrategies[$sanitizeValueStrategy])) { + result = sanitizeValueStrategies[$sanitizeValueStrategy](params); + } else { + result = params; + } + return result; + }; + $translateInterpolator.setLocale = function (locale) { + $locale = locale; + }; + $translateInterpolator.getInterpolationIdentifier = function () { + return $identifier; + }; + $translateInterpolator.useSanitizeValueStrategy = function (value) { + $sanitizeValueStrategy = value; + return this; + }; + $translateInterpolator.interpolate = function (string, interpolateParams) { + if ($sanitizeValueStrategy) { + interpolateParams = sanitizeParams(interpolateParams); + } + return $interpolate(string)(interpolateParams || {}); + }; + return $translateInterpolator; + } +]); +angular.module('pascalprecht.translate').constant('$STORAGE_KEY', 'NG_TRANSLATE_LANG_KEY'); +angular.module('pascalprecht.translate').directive('translate', [ + '$translate', + '$q', + '$interpolate', + '$compile', + '$parse', + '$rootScope', + function ($translate, $q, $interpolate, $compile, $parse, $rootScope) { + return { + restrict: 'AE', + scope: true, + compile: function (tElement, tAttr) { + var translateValuesExist = tAttr.translateValues ? tAttr.translateValues : undefined; + var translateInterpolation = tAttr.translateInterpolation ? tAttr.translateInterpolation : undefined; + var translateValueExist = tElement[0].outerHTML.match(/translate-value-+/i); + var interpolateRegExp = '^(.*)(' + $interpolate.startSymbol() + '.*' + $interpolate.endSymbol() + ')(.*)'; + return function linkFn(scope, iElement, iAttr) { + scope.interpolateParams = {}; + scope.preText = ''; + scope.postText = ''; + iAttr.$observe('translate', function (translationId) { + if (angular.equals(translationId, '') || !angular.isDefined(translationId)) { + var interpolateMatches = iElement.text().match(interpolateRegExp); + if (angular.isArray(interpolateMatches)) { + scope.preText = interpolateMatches[1]; + scope.postText = interpolateMatches[3]; + scope.translationId = $interpolate(interpolateMatches[2])(scope.$parent); + } else { + scope.translationId = iElement.text().replace(/^\s+|\s+$/g, ''); + } + } else { + scope.translationId = translationId; + } + }); + iAttr.$observe('translateDefault', function (value) { + scope.defaultText = value; + }); + if (translateValuesExist) { + iAttr.$observe('translateValues', function (interpolateParams) { + if (interpolateParams) { + scope.$parent.$watch(function () { + angular.extend(scope.interpolateParams, $parse(interpolateParams)(scope.$parent)); + }); + } + }); + } + if (translateValueExist) { + var fn = function (attrName) { + iAttr.$observe(attrName, function (value) { + scope.interpolateParams[angular.lowercase(attrName.substr(14, 1)) + attrName.substr(15)] = value; + }); + }; + for (var attr in iAttr) { + if (Object.prototype.hasOwnProperty.call(iAttr, attr) && attr.substr(0, 14) === 'translateValue' && attr !== 'translateValues') { + fn(attr); + } + } + } + var applyElementContent = function (value, scope, successful) { + if (!successful && typeof scope.defaultText !== 'undefined') { + value = scope.defaultText; + } + iElement.html(scope.preText + value + scope.postText); + var globallyEnabled = $translate.isPostCompilingEnabled(); + var locallyDefined = typeof tAttr.translateCompile !== 'undefined'; + var locallyEnabled = locallyDefined && tAttr.translateCompile !== 'false'; + if (globallyEnabled && !locallyDefined || locallyEnabled) { + $compile(iElement.contents())(scope); + } + }; + var updateTranslationFn = function () { + if (!translateValuesExist && !translateValueExist) { + return function () { + var unwatch = scope.$watch('translationId', function (value) { + if (scope.translationId && value) { + $translate(value, {}, translateInterpolation).then(function (translation) { + applyElementContent(translation, scope, true); + unwatch(); + }, function (translationId) { + applyElementContent(translationId, scope, false); + unwatch(); + }); + } + }, true); + }; + } else { + return function () { + var updateTranslations = function () { + if (scope.translationId && scope.interpolateParams) { + $translate(scope.translationId, scope.interpolateParams, translateInterpolation).then(function (translation) { + applyElementContent(translation, scope, true); + }, function (translationId) { + applyElementContent(translationId, scope, false); + }); + } + }; + scope.$watch('interpolateParams', updateTranslations, true); + scope.$watch('translationId', updateTranslations); + }; + } + }(); + var unbind = $rootScope.$on('$translateChangeSuccess', updateTranslationFn); + updateTranslationFn(); + scope.$on('$destroy', unbind); + }; + } + }; + } +]); +angular.module('pascalprecht.translate').directive('translateCloak', [ + '$rootScope', + '$translate', + function ($rootScope, $translate) { + return { + compile: function (tElement) { + var applyCloak = function () { + tElement.addClass($translate.cloakClassName()); + }, removeCloak = function () { + tElement.removeClass($translate.cloakClassName()); + }, removeListener = $rootScope.$on('$translateChangeEnd', function () { + removeCloak(); + removeListener(); + removeListener = null; + }); + applyCloak(); + return function linkFn(scope, iElement, iAttr) { + if (iAttr.translateCloak && iAttr.translateCloak.length) { + iAttr.$observe('translateCloak', function (translationId) { + $translate(translationId).then(removeCloak, applyCloak); + }); + } + }; + } + }; + } +]); +angular.module('pascalprecht.translate').filter('translate', [ + '$parse', + '$translate', + function ($parse, $translate) { + var translateFilter = function (translationId, interpolateParams, interpolation) { + if (!angular.isObject(interpolateParams)) { + interpolateParams = $parse(interpolateParams)(this); + } + return $translate.instant(translationId, interpolateParams, interpolation); + }; + translateFilter.$stateful = true; + return translateFilter; + } +]); \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate_2.4.2/angular-translate.min.js b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate_2.4.2/angular-translate.min.js new file mode 100644 index 000000000..d5a421d15 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular-translate_2.4.2/angular-translate.min.js @@ -0,0 +1,6 @@ +/*! + * angular-translate - v2.4.2 - 2014-10-21 + * http://github.com/angular-translate/angular-translate + * Copyright (c) 2014 ; Licensed MIT + */ +angular.module("pascalprecht.translate",["ng"]).run(["$translate",function(a){var b=a.storageKey(),c=a.storage();c?c.get(b)?a.use(c.get(b)):angular.isString(a.preferredLanguage())?a.use(a.preferredLanguage()):c.set(b,a.use()):angular.isString(a.preferredLanguage())&&a.use(a.preferredLanguage())}]),angular.module("pascalprecht.translate").provider("$translate",["$STORAGE_KEY",function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q={},r=[],s=a,t=[],u=!1,v="translate-cloak",w=!1,x=".",y="2.4.2",z=function(){var a=window.navigator;return((angular.isArray(a.languages)?a.languages[0]:a.language||a.browserLanguage||a.systemLanguage||a.userLanguage)||"").split("-").join("_")},A=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},B=function(){return this.replace(/^\s+|\s+$/g,"")},C=function(a){for(var b=[],d=angular.lowercase(a),e=0,f=r.length;f>e;e++)b.push(angular.lowercase(r[e]));if(A(b,d)>-1)return a;if(c){var g;for(var h in c){var i=!1,j=Object.prototype.hasOwnProperty.call(c,h)&&angular.lowercase(h)===angular.lowercase(a);if("*"===h.slice(-1)&&(i=h.slice(0,-1)===a.slice(0,h.length-1)),(j||i)&&(g=c[h],A(b,angular.lowercase(g))>-1))return g}}var k=a.split("_");return k.length>1&&A(b,angular.lowercase(k[0]))>-1?k[0]:a},D=function(a,b){if(!a&&!b)return q;if(a&&!b){if(angular.isString(a))return q[a]}else angular.isObject(q[a])||(q[a]={}),angular.extend(q[a],E(b));return this};this.translations=D,this.cloakClassName=function(a){return a?(v=a,this):v};var E=function(a,b,c,d){var e,f,g,h;b||(b=[]),c||(c={});for(e in a)Object.prototype.hasOwnProperty.call(a,e)&&(h=a[e],angular.isObject(h)?E(h,b.concat(e),c,e):(f=b.length?""+b.join(x)+x+e:e,b.length&&e===d&&(g=""+b.join(x),c[g]="@:"+f),c[f]=h));return c};this.addInterpolation=function(a){return t.push(a),this},this.useMessageFormatInterpolation=function(){return this.useInterpolation("$translateMessageFormatInterpolation")},this.useInterpolation=function(a){return k=a,this},this.useSanitizeValueStrategy=function(a){return u=a,this},this.preferredLanguage=function(a){return F(a),this};var F=function(a){return a&&(b=a),b};this.translationNotFoundIndicator=function(a){return this.translationNotFoundIndicatorLeft(a),this.translationNotFoundIndicatorRight(a),this},this.translationNotFoundIndicatorLeft=function(a){return a?(n=a,this):n},this.translationNotFoundIndicatorRight=function(a){return a?(o=a,this):o},this.fallbackLanguage=function(a){return G(a),this};var G=function(a){return a?(angular.isString(a)?(e=!0,d=[a]):angular.isArray(a)&&(e=!1,d=a),angular.isString(b)&&A(d,b)<0&&d.push(b),this):e?d[0]:d};this.use=function(a){if(a){if(!q[a]&&!l)throw new Error("$translateProvider couldn't find translationTable for langKey: '"+a+"'");return f=a,this}return f};var H=function(a){return a?void(s=a):i?i+s:s};this.storageKey=H,this.useUrlLoader=function(a,b){return this.useLoader("$translateUrlLoader",angular.extend({url:a},b))},this.useStaticFilesLoader=function(a){return this.useLoader("$translateStaticFilesLoader",a)},this.useLoader=function(a,b){return l=a,m=b||{},this},this.useLocalStorage=function(){return this.useStorage("$translateLocalStorage")},this.useCookieStorage=function(){return this.useStorage("$translateCookieStorage")},this.useStorage=function(a){return h=a,this},this.storagePrefix=function(a){return a?(i=a,this):a},this.useMissingTranslationHandlerLog=function(){return this.useMissingTranslationHandler("$translateMissingTranslationHandlerLog")},this.useMissingTranslationHandler=function(a){return j=a,this},this.usePostCompiling=function(a){return w=!!a,this},this.determinePreferredLanguage=function(a){var c=a&&angular.isFunction(a)?a():z();return b=r.length?C(c):c,this},this.registerAvailableLanguageKeys=function(a,b){return a?(r=a,b&&(c=b),this):r},this.useLoaderCache=function(a){return a===!1?p=void 0:a===!0?p=!0:"undefined"==typeof a?p="$translationCache":a&&(p=a),this},this.$get=["$log","$injector","$rootScope","$q",function(a,c,i,r){var x,z,I,J=c.get(k||"$translateDefaultInterpolation"),K=!1,L={},M={},N=function(a,c,e){if(angular.isArray(a)){var g=function(a){for(var b={},d=[],f=function(a){var d=r.defer(),f=function(c){b[a]=c,d.resolve([a,c])};return N(a,c,e).then(f,f),d.promise},g=0,h=a.length;h>g;g++)d.push(f(a[g]));return r.all(d).then(function(){return b})};return g(a)}var i=r.defer();a&&(a=B.apply(a));var j=function(){var a=b?M[b]:M[f];if(z=0,h&&!a){var c=x.get(s);if(a=M[c],d&&d.length){var e=A(d,c);z=0===e?1:0,A(d,b)<0&&d.push(b)}}return a}();return j?j.then(function(){Z(a,c,e).then(i.resolve,i.reject)},i.reject):Z(a,c,e).then(i.resolve,i.reject),i.promise},O=function(a){return n&&(a=[n,a].join(" ")),o&&(a=[a,o].join(" ")),a},P=function(a){f=a,i.$emit("$translateChangeSuccess",{language:a}),h&&x.set(N.storageKey(),f),J.setLocale(f),angular.forEach(L,function(a,b){L[b].setLocale(f)}),i.$emit("$translateChangeEnd",{language:a})},Q=function(a){if(!a)throw"No language key specified for loading.";var b=r.defer();i.$emit("$translateLoadingStart",{language:a}),K=!0;var d=p;"string"==typeof d&&(d=c.get(d));var e=angular.extend({},m,{key:a,$http:angular.extend({},{cache:d},m.$http)});return c.get(l)(e).then(function(c){var d={};i.$emit("$translateLoadingSuccess",{language:a}),angular.isArray(c)?angular.forEach(c,function(a){angular.extend(d,E(a))}):angular.extend(d,E(c)),K=!1,b.resolve({key:a,table:d}),i.$emit("$translateLoadingEnd",{language:a})},function(a){i.$emit("$translateLoadingError",{language:a}),b.reject(a),i.$emit("$translateLoadingEnd",{language:a})}),b.promise};if(h&&(x=c.get(h),!x.get||!x.set))throw new Error("Couldn't use storage '"+h+"', missing get() or set() method!");angular.isFunction(J.useSanitizeValueStrategy)&&J.useSanitizeValueStrategy(u),t.length&&angular.forEach(t,function(a){var d=c.get(a);d.setLocale(b||f),angular.isFunction(d.useSanitizeValueStrategy)&&d.useSanitizeValueStrategy(u),L[d.getInterpolationIdentifier()]=d});var R=function(a){var b=r.defer();return Object.prototype.hasOwnProperty.call(q,a)?b.resolve(q[a]):M[a]?M[a].then(function(a){D(a.key,a.table),b.resolve(a.table)},b.reject):b.reject(),b.promise},S=function(a,b,c,d){var e=r.defer();return R(a).then(function(g){Object.prototype.hasOwnProperty.call(g,b)?(d.setLocale(a),e.resolve(d.interpolate(g[b],c)),d.setLocale(f)):e.reject()},e.reject),e.promise},T=function(a,b,c,d){var e,g=q[a];return Object.prototype.hasOwnProperty.call(g,b)&&(d.setLocale(a),e=d.interpolate(g[b],c),d.setLocale(f)),e},U=function(a){if(j){var b=c.get(j)(a,f);return void 0!==b?b:a}return a},V=function(a,b,c,e){var f=r.defer();if(a0?I:z,a,b,c)},Y=function(a,b,c){return W(I>0?I:z,a,b,c)},Z=function(a,b,c){var e=r.defer(),g=f?q[f]:q,h=c?L[c]:J;if(g&&Object.prototype.hasOwnProperty.call(g,a)){var i=g[a];"@:"===i.substr(0,2)?N(i.substr(2),b,c).then(e.resolve,e.reject):e.resolve(h.interpolate(i,b))}else{var k;j&&!K&&(k=U(a)),f&&d&&d.length?X(a,b,h).then(function(a){e.resolve(a)},function(a){e.reject(O(a))}):j&&!K&&k?e.resolve(k):e.reject(O(a))}return e.promise},$=function(a,b,c){var e,g=f?q[f]:q,h=c?L[c]:J;if(g&&Object.prototype.hasOwnProperty.call(g,a)){var i=g[a];e="@:"===i.substr(0,2)?$(i.substr(2),b,c):h.interpolate(i,b)}else{var k;j&&!K&&(k=U(a)),f&&d&&d.length?(z=0,e=Y(a,b,h)):e=j&&!K&&k?k:O(a)}return e};if(N.preferredLanguage=function(a){return a&&F(a),b},N.cloakClassName=function(){return v},N.fallbackLanguage=function(a){if(void 0!==a&&null!==a){if(G(a),l&&d&&d.length)for(var b=0,c=d.length;c>b;b++)M[d[b]]||(M[d[b]]=Q(d[b]));N.use(N.use())}return e?d[0]:d},N.useFallbackLanguage=function(a){if(void 0!==a&&null!==a)if(a){var b=A(d,a);b>-1&&(I=b)}else I=0},N.proposedLanguage=function(){return g},N.storage=function(){return x},N.use=function(a){if(!a)return f;var b=r.defer();i.$emit("$translateChangeStart",{language:a});var c=C(a);return c&&(a=c),q[a]||!l||M[a]?(b.resolve(a),P(a)):(g=a,M[a]=Q(a).then(function(c){D(c.key,c.table),b.resolve(c.key),P(c.key),g===a&&(g=void 0)},function(a){g===a&&(g=void 0),i.$emit("$translateChangeError",{language:a}),b.reject(a),i.$emit("$translateChangeEnd",{language:a})})),b.promise},N.storageKey=function(){return H()},N.isPostCompilingEnabled=function(){return w},N.refresh=function(a){function b(){e.resolve(),i.$emit("$translateRefreshEnd",{language:a})}function c(){e.reject(),i.$emit("$translateRefreshEnd",{language:a})}if(!l)throw new Error("Couldn't refresh translation table, no loader registered!");var e=r.defer();if(i.$emit("$translateRefreshStart",{language:a}),a)q[a]?Q(a).then(function(c){D(c.key,c.table),a===f&&P(f),b()},c):c();else{var g=[],h={};if(d&&d.length)for(var j=0,k=d.length;k>j;j++)g.push(Q(d[j])),h[d[j]]=!0;f&&!h[f]&&g.push(Q(f)),r.all(g).then(function(a){angular.forEach(a,function(a){q[a.key]&&delete q[a.key],D(a.key,a.table)}),f&&P(f),b()})}return e.promise},N.instant=function(a,c,e){if(null===a||angular.isUndefined(a))return a;if(angular.isArray(a)){for(var g={},h=0,i=a.length;i>h;h++)g[a[h]]=N.instant(a[h],c,e);return g}if(angular.isString(a)&&a.length<1)return a;a&&(a=B.apply(a));var k,l=[];b&&l.push(b),f&&l.push(f),d&&d.length&&(l=l.concat(d));for(var m=0,n=l.length;n>m;m++){var o=l[m];if(q[o]&&"undefined"!=typeof q[o][a]&&(k=$(a,c,e)),"undefined"!=typeof k)break}return k||""===k||(k=J.interpolate(a,c),j&&!K&&(k=U(a))),k},N.versionInfo=function(){return y},N.loaderCache=function(){return p},l&&(angular.equals(q,{})&&N.use(N.use()),d&&d.length))for(var _=function(a){D(a.key,a.table),i.$emit("$translateChangeEnd",{language:a.key})},ab=0,bb=d.length;bb>ab;ab++)M[d[ab]]=Q(d[ab]).then(_);return N}]}]),angular.module("pascalprecht.translate").factory("$translateDefaultInterpolation",["$interpolate",function(a){var b,c={},d="default",e=null,f={escaped:function(a){var b={};for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=angular.element("
      ").text(a[c]).html());return b}},g=function(a){var b;return b=angular.isFunction(f[e])?f[e](a):a};return c.setLocale=function(a){b=a},c.getInterpolationIdentifier=function(){return d},c.useSanitizeValueStrategy=function(a){return e=a,this},c.interpolate=function(b,c){return e&&(c=g(c)),a(b)(c||{})},c}]),angular.module("pascalprecht.translate").constant("$STORAGE_KEY","NG_TRANSLATE_LANG_KEY"),angular.module("pascalprecht.translate").directive("translate",["$translate","$q","$interpolate","$compile","$parse","$rootScope",function(a,b,c,d,e,f){return{restrict:"AE",scope:!0,compile:function(b,g){var h=g.translateValues?g.translateValues:void 0,i=g.translateInterpolation?g.translateInterpolation:void 0,j=b[0].outerHTML.match(/translate-value-+/i),k="^(.*)("+c.startSymbol()+".*"+c.endSymbol()+")(.*)";return function(b,l,m){if(b.interpolateParams={},b.preText="",b.postText="",m.$observe("translate",function(a){if(angular.equals(a,"")||!angular.isDefined(a)){var d=l.text().match(k);angular.isArray(d)?(b.preText=d[1],b.postText=d[3],b.translationId=c(d[2])(b.$parent)):b.translationId=l.text().replace(/^\s+|\s+$/g,"")}else b.translationId=a}),m.$observe("translateDefault",function(a){b.defaultText=a}),h&&m.$observe("translateValues",function(a){a&&b.$parent.$watch(function(){angular.extend(b.interpolateParams,e(a)(b.$parent))})}),j){var n=function(a){m.$observe(a,function(c){b.interpolateParams[angular.lowercase(a.substr(14,1))+a.substr(15)]=c})};for(var o in m)Object.prototype.hasOwnProperty.call(m,o)&&"translateValue"===o.substr(0,14)&&"translateValues"!==o&&n(o)}var p=function(b,c,e){e||"undefined"==typeof c.defaultText||(b=c.defaultText),l.html(c.preText+b+c.postText);var f=a.isPostCompilingEnabled(),h="undefined"!=typeof g.translateCompile,i=h&&"false"!==g.translateCompile;(f&&!h||i)&&d(l.contents())(c)},q=function(){return h||j?function(){var c=function(){b.translationId&&b.interpolateParams&&a(b.translationId,b.interpolateParams,i).then(function(a){p(a,b,!0)},function(a){p(a,b,!1)})};b.$watch("interpolateParams",c,!0),b.$watch("translationId",c)}:function(){var c=b.$watch("translationId",function(d){b.translationId&&d&&a(d,{},i).then(function(a){p(a,b,!0),c()},function(a){p(a,b,!1),c()})},!0)}}(),r=f.$on("$translateChangeSuccess",q);q(),b.$on("$destroy",r)}}}}]),angular.module("pascalprecht.translate").directive("translateCloak",["$rootScope","$translate",function(a,b){return{compile:function(c){var d=function(){c.addClass(b.cloakClassName())},e=function(){c.removeClass(b.cloakClassName())},f=a.$on("$translateChangeEnd",function(){e(),f(),f=null});return d(),function(a,c,f){f.translateCloak&&f.translateCloak.length&&f.$observe("translateCloak",function(a){b(a).then(e,d)})}}}}]),angular.module("pascalprecht.translate").filter("translate",["$parse","$translate",function(a,b){var c=function(c,d,e){return angular.isObject(d)||(d=a(d)(this)),b.instant(c,d,e)};return c.$stateful=!0,c}]); \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular_1.2.13/angular-animate.min.js b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular_1.2.13/angular-animate.min.js new file mode 100644 index 000000000..450286541 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/angular_1.2.13/angular-animate.min.js @@ -0,0 +1,27 @@ +/* + AngularJS v1.2.13 + (c) 2010-2014 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(z,f,T){'use strict';f.module("ngAnimate",["ng"]).factory("$$animateReflow",["$window","$timeout","$document",function(f,h,d){var n=f.requestAnimationFrame||f.webkitRequestAnimationFrame||function(d){return h(d,10,!1)},w=f.cancelAnimationFrame||f.webkitCancelAnimationFrame||function(d){return h.cancel(d)};return function(d){var f=n(function(){d()});return function(){w(f)}}}]).factory("$$asyncQueueBuffer",["$timeout",function(f){var h,d=[];return function(n){f.cancel(h);d.push(n);h=f(function(){for(var f= +0;f= +u&&a>=s&&e()}var h=d(a);b=a.data(E);if(-1!=h.className.indexOf(c)&&b){var l="";D(c.split(" "),function(b,a){l+=(0").append(b).html();try{return 3===b[0].nodeType?O(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/, +function(a,b){return"<"+O(b)})}catch(d){return O(c)}}function Xb(b){try{return decodeURIComponent(b)}catch(a){}}function Yb(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.split("="),d=Xb(c[0]),v(d)&&(b=v(c[1])?Xb(c[1]):!0,a[d]?H(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Zb(b){var a=[];r(b,function(b,d){H(b)?r(b,function(b){a.push(va(d,!0)+(!0===b?"":"="+va(b,!0)))}):a.push(va(d,!0)+(!0===b?"":"="+va(b,!0)))});return a.length?a.join("&"):""}function xb(b){return va(b, +!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function va(b,a){return encodeURIComponent(b).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,a?"%20":"+")}function Uc(b,a){function c(a){a&&d.push(a)}var d=[b],e,f,g=["ng:app","ng-app","x-ng-app","data-ng-app"],h=/\sng[:\-]app(:\s*([\w\d_]+);?)?\s/;r(g,function(a){g[a]=!0;c(T.getElementById(a));a=a.replace(":","\\:");b.querySelectorAll&&(r(b.querySelectorAll("."+a),c),r(b.querySelectorAll("."+ +a+"\\:"),c),r(b.querySelectorAll("["+a+"]"),c))});r(d,function(a){if(!e){var b=h.exec(" "+a.className+" ");b?(e=a,f=(b[2]||"").replace(/\s+/g,",")):r(a.attributes,function(b){!e&&g[b.name]&&(e=a,f=b.value)})}});e&&a(e,f?[f]:[])}function $b(b,a){var c=function(){b=z(b);if(b.injector()){var c=b[0]===T?"document":ga(b);throw Oa("btstrpd",c);}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);a.unshift("ng");c=ac(a);c.invoke(["$rootScope","$rootElement","$compile","$injector","$animate", +function(a,b,c,d,e){a.$apply(function(){b.data("$injector",d);c(b)(a)})}]);return c},d=/^NG_DEFER_BOOTSTRAP!/;if(C&&!d.test(C.name))return c();C.name=C.name.replace(d,"");Ba.resumeBootstrap=function(b){r(b,function(b){a.push(b)});c()}}function db(b,a){a=a||"_";return b.replace(Vc,function(b,d){return(d?a:"")+b.toLowerCase()})}function yb(b,a,c){if(!b)throw Oa("areq",a||"?",c||"required");return b}function Qa(b,a,c){c&&H(b)&&(b=b[b.length-1]);yb(N(b),a,"not a function, got "+(b&&"object"==typeof b? +b.constructor.name||"Object":typeof b));return b}function wa(b,a){if("hasOwnProperty"===b)throw Oa("badname",a);}function bc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g 
      "+b;a.removeChild(a.firstChild);Cb(this,a.childNodes);z(T.createDocumentFragment()).append(this)}else Cb(this, +b)}function Db(b){return b.cloneNode(!0)}function Da(b){cc(b);var a=0;for(b=b.childNodes||[];a=P?(c.preventDefault=null,c.stopPropagation=null,c.isDefaultPrevented=null):(delete c.preventDefault,delete c.stopPropagation,delete c.isDefaultPrevented)};c.elem=b;return c}function Ea(b){var a=typeof b,c;"object"==a&&null!==b?"function"==typeof(c=b.$$hashKey)?c=b.$$hashKey():c=== +s&&(c=b.$$hashKey=$a()):c=b;return a+":"+c}function Ta(b){r(b,this.put,this)}function jc(b){var a,c;"function"==typeof b?(a=b.$inject)||(a=[],b.length&&(c=b.toString().replace(ad,""),c=c.match(bd),r(c[1].split(cd),function(b){b.replace(dd,function(b,c,d){a.push(d)})})),b.$inject=a):H(b)?(c=b.length-1,Qa(b[c],"fn"),a=b.slice(0,c)):Qa(b,"fn",!0);return a}function ac(b){function a(a){return function(b,c){if(Z(b))r(b,Rb(a));else return a(b,c)}}function c(a,b){wa(a,"service");if(N(b)||H(b))b=m.instantiate(b); +if(!b.$get)throw Ua("pget",a);return l[a+h]=b}function d(a,b){return c(a,{$get:b})}function e(a){var b=[],c,d,f,h;r(a,function(a){if(!k.get(a)){k.put(a,!0);try{if(D(a))for(c=Va(a),b=b.concat(e(c.requires)).concat(c._runBlocks),d=c._invokeQueue,f=0,h=d.length;f 4096 bytes)!"));else{if(n.cookie!==ba)for(ba=n.cookie,d=ba.split("; "),L={},f=0;fk&&this.remove(p.key),b},get:function(a){var b=l[a];if(b)return e(b),n[a]},remove:function(a){var b=l[a];b&&(b==m&&(m=b.p),b==p&&(p=b.n),f(b.n,b.p),delete l[a],delete n[a],g--)},removeAll:function(){n={};g=0;l={};m=p=null},destroy:function(){l=h=n=null;delete a[b]},info:function(){return t({},h,{size:g})}}}var a={};b.info=function(){var b={};r(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]}; +return b}}function id(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function kc(b,a){var c={},d="Directive",e=/^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,f=/(([\d\w\-_]+)(?:\:([^;]+))?;?)/,g=/^<\s*(tr|th|td|tbody)(\s+[^>]*)?>/i,h=/^(on[a-z]+|formaction)$/;this.directive=function k(a,e){wa(a,"directive");D(a)?(yb(e,"directiveFactory"),c.hasOwnProperty(a)||(c[a]=[],b.factory(a+d,["$injector","$exceptionHandler",function(b,d){var e=[];r(c[a],function(c,f){try{var h=b.invoke(c);N(h)?h= +{compile:aa(h)}:!h.compile&&h.link&&(h.compile=aa(h.link));h.priority=h.priority||0;h.index=f;h.name=h.name||a;h.require=h.require||h.controller&&h.name;h.restrict=h.restrict||"A";e.push(h)}catch(g){d(g)}});return e}])),c[a].push(e)):r(a,Rb(k));return this};this.aHrefSanitizationWhitelist=function(b){return v(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return v(b)?(a.imgSrcSanitizationWhitelist(b),this):a.imgSrcSanitizationWhitelist()}; +this.$get=["$injector","$interpolate","$exceptionHandler","$http","$templateCache","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,m,p,q,A,B,I,u,G,W,y){function Y(a,b,c,d,e){a instanceof z||(a=z(a));r(a,function(b,c){3==b.nodeType&&b.nodeValue.match(/\S+/)&&(a[c]=z(b).wrap("").parent()[0])});var f=L(a,b,a,c,d,e);S(a,"ng-scope");return function(b,c,d){yb(b,"scope");var e=c?Fa.clone.call(a):a;r(d,function(a,b){e.data("$"+b+"Controller",a)}); +d=0;for(var h=e.length;darguments.length&&(b=a,a=s);Ha&&(c=lb);return q(a,b,c)}var K,y,u,Y,M,U,lb={},v;K=c===f?d:Ub(d,new Gb(z(f),d.$attr));y=K.$$element;if(L){var t=/^\s*([@=&])(\??)\s*(\w*)\s*$/;h=z(f);U=e.$new(!0);ba&&ba===L.$$originalDirective?h.data("$isolateScope",U):h.data("$isolateScopeNoTemplate",U);S(h,"ng-isolate-scope");r(L.scope,function(a,c){var d=a.match(t)||[],f=d[3]||c,h="?"==d[2],d=d[1],g,k,q,m;U.$$isolateBindings[c]=d+f;switch(d){case "@":K.$observe(f,function(a){U[c]= +a});K.$$observers[f].$$scope=e;K[f]&&(U[c]=b(K[f])(e));break;case "=":if(h&&!K[f])break;k=A(K[f]);m=k.literal?ta:function(a,b){return a===b};q=k.assign||function(){g=U[c]=k(e);throw ia("nonassign",K[f],L.name);};g=U[c]=k(e);U.$watch(function(){var a=k(e);m(a,U[c])||(m(a,g)?q(e,a=U[c]):U[c]=a);return g=a},null,k.literal);break;case "&":k=A(K[f]);U[c]=function(a){return k(e,a)};break;default:throw ia("iscp",L.name,c,a);}})}v=q&&p;W&&r(W,function(a){var b={$scope:a===L||a.$$isolateScope?U:e,$element:y, +$attrs:K,$transclude:v},c;M=a.controller;"@"==M&&(M=K[a.name]);c=B(M,b);lb[a.name]=c;Ha||y.data("$"+a.name+"Controller",c);a.controllerAs&&(b.$scope[a.controllerAs]=c)});h=0;for(u=g.length;hF.priority)break;if(t=F.scope)u=u||F,F.templateUrl||(R("new/isolated scope",L,F,J),Z(t)&&(L=F));ha=F.name;!F.templateUrl&&F.controller&&(t=F.controller,W=W||{},R("'"+ha+"' controller",W[ha],F,J),W[ha]=F);if(t=F.transclude)Wa=!0,F.$$tlb|| +(R("transclusion",v,F,J),v=F),"element"==t?(Ha=!0,y=F.priority,t=M(c,Q,V),J=d.$$element=z(T.createComment(" "+ha+": "+d[ha]+" ")),c=J[0],mb(f,z(ua.call(t,0)),c),E=Y(t,e,y,h&&h.name,{nonTlbTranscludeDirective:v})):(t=z(Db(c)).contents(),J.empty(),E=Y(t,e));if(F.template)if(R("template",ba,F,J),ba=F,t=N(F.template)?F.template(J,d):F.template,t=X(t),F.replace){h=F;t=x(t);c=t[0];if(1!=t.length||1!==c.nodeType)throw ia("tplrt",ha,"");mb(f,J,c);P={$attr:{}};t=U(c,[],P);var $=a.splice(C+1,a.length-(C+1)); +L&&kb(t);a=a.concat(t).concat($);w(d,P);P=a.length}else J.html(t);if(F.templateUrl)R("template",ba,F,J),ba=F,F.replace&&(h=F),I=O(a.splice(C,a.length-C),J,d,f,E,g,k,{controllerDirectives:W,newIsolateScopeDirective:L,templateDirective:ba,nonTlbTranscludeDirective:v}),P=a.length;else if(F.compile)try{pa=F.compile(J,d,E),N(pa)?p(null,pa,Q,V):pa&&p(pa.pre,pa.post,Q,V)}catch(aa){m(aa,ga(J))}F.terminal&&(I.terminal=!0,y=Math.max(y,F.priority))}I.scope=u&&!0===u.scope;I.transclude=Wa&&E;q.hasElementTranscludeDirective= +Ha;return I}function kb(a){for(var b=0,c=a.length;bp.priority)&&-1!=p.restrict.indexOf(f)&&(q&&(p=Tb(p,{$$start:q,$$end:l})),b.push(p),g=p)}catch(B){m(B)}}return g}function w(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;r(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))}); +r(b,function(b,f){"class"==f?(S(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function x(a){var b;a=da(a);if(b=g.exec(a)){b=b[1].toLowerCase();a=z(""+a+"
      ");var c=a.children("tbody"),d=/(td|th)/.test(b)&&a.find("tr");c.length&&"tbody"!==b&&(a=c);d&&d.length&&(a=d);return a.contents()}return z("
      "+a+"
      ").contents()}function O(a, +b,c,d,e,f,h,g){var k=[],l,m,A=b[0],B=a.shift(),y=t({},B,{templateUrl:null,transclude:null,replace:null,$$originalDirective:B}),I=N(B.templateUrl)?B.templateUrl(b,c):B.templateUrl;b.empty();p.get(G.getTrustedResourceUrl(I),{cache:q}).success(function(q){var p,G;q=X(q);if(B.replace){q=x(q);p=q[0];if(1!=q.length||1!==p.nodeType)throw ia("tplrt",B.name,I);q={$attr:{}};mb(d,b,p);var u=U(p,[],q);Z(B.scope)&&kb(u);a=u.concat(a);w(c,q)}else p=A,b.html(q);a.unshift(y);l=Wa(a,p,c,e,b,B,f,h,g);r(d,function(a, +c){a==p&&(d[c]=b[0])});for(m=L(b[0].childNodes,e);k.length;){q=k.shift();G=k.shift();var W=k.shift(),Y=k.shift(),u=b[0];if(G!==A){var M=G.className;g.hasElementTranscludeDirective&&B.replace||(u=Db(p));mb(W,z(G),u);S(z(u),M)}G=l.transclude?ba(q,l.transclude):Y;l(m,q,u,d,G)}k=null}).error(function(a,b,c,d){throw ia("tpload",d.url);});return function(a,b,c,d,e){k?(k.push(b),k.push(c),k.push(d),k.push(e)):l(m,b,c,d,e)}}function E(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name< +b.name?-1:1:a.index-b.index}function R(a,b,c,d){if(b)throw ia("multidir",b.name,c.name,a,ga(d));}function C(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:aa(function(a,b){var c=b.parent(),e=c.data("$binding")||[];e.push(d);S(c.data("$binding",e),"ng-binding");a.$watch(d,function(a){b[0].nodeValue=a})})})}function Ha(a,b){if("srcdoc"==b)return G.HTML;var c=Ga(a);if("xlinkHref"==b||"FORM"==c&&"action"==b||"IMG"!=c&&("src"==b||"ngSrc"==b))return G.RESOURCE_URL}function ha(a,c,d,e){var f=b(d,!0);if(f){if("multiple"=== +e&&"SELECT"===Ga(a))throw ia("selmulti",ga(a));c.push({priority:100,compile:function(){return{pre:function(c,d,g){d=g.$$observers||(g.$$observers={});if(h.test(e))throw ia("nodomevents");if(f=b(g[e],!0,Ha(a,e)))g[e]=f(c),(d[e]||(d[e]=[])).$$inter=!0,(g.$$observers&&g.$$observers[e].$$scope||c).$watch(f,function(a,b){"class"===e&&a!=b?g.$updateClass(a,b):g.$set(e,a)})}}}})}}function mb(a,b,c){var d=b[0],e=b.length,f=d.parentNode,h,g;if(a)for(h=0,g=a.length;ha.status?b:m.reject(b)}var d={transformRequest:e.transformRequest,transformResponse:e.transformResponse},f=function(a){function b(a){var c;r(a,function(b,d){N(b)&&(c=b(),null!=c?a[d]=c:delete a[d])})}var c=e.headers,d=t({},a.headers), +f,h,c=t({},c.common,c[O(a.method)]);b(c);b(d);a:for(f in c){a=O(f);for(h in d)if(O(h)===a)continue a;d[f]=c[f]}return d}(a);t(d,a);d.headers=f;d.method=Ia(d.method);(a=Hb(d.url)?b.cookies()[d.xsrfCookieName||e.xsrfCookieName]:s)&&(f[d.xsrfHeaderName||e.xsrfHeaderName]=a);var h=[function(a){f=a.headers;var b=pc(a.data,oc(f),a.transformRequest);x(a.data)&&r(f,function(a,b){"content-type"===O(b)&&delete f[b]});x(a.withCredentials)&&!x(e.withCredentials)&&(a.withCredentials=e.withCredentials);return A(a, +b,f).then(c,c)},s],g=m.when(d);for(r(u,function(a){(a.request||a.requestError)&&h.unshift(a.request,a.requestError);(a.response||a.responseError)&&h.push(a.response,a.responseError)});h.length;){a=h.shift();var k=h.shift(),g=g.then(a,k)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,d)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,d)});return g};return g}function A(b,c,f){function g(a,b,c){u&&(200<=a&&300>a?u.put(s,[a,b,nc(c)]):u.remove(s)); +k(b,a,c);d.$$phase||d.$apply()}function k(a,c,d){c=Math.max(c,0);(200<=c&&300>c?p.resolve:p.reject)({data:a,status:c,headers:oc(d),config:b})}function n(){var a=bb(q.pendingRequests,b);-1!==a&&q.pendingRequests.splice(a,1)}var p=m.defer(),A=p.promise,u,r,s=B(b.url,b.params);q.pendingRequests.push(b);A.then(n,n);(b.cache||e.cache)&&(!1!==b.cache&&"GET"==b.method)&&(u=Z(b.cache)?b.cache:Z(e.cache)?e.cache:I);if(u)if(r=u.get(s),v(r)){if(r.then)return r.then(n,n),r;H(r)?k(r[1],r[0],ca(r[2])):k(r,200, +{})}else u.put(s,A);x(r)&&a(b.method,s,c,g,f,b.timeout,b.withCredentials,b.responseType);return A}function B(a,b){if(!b)return a;var c=[];Qc(b,function(a,b){null===a||x(a)||(H(a)||(a=[a]),r(a,function(a){Z(a)&&(a=oa(a));c.push(va(b)+"="+va(a))}))});return a+(-1==a.indexOf("?")?"?":"&")+c.join("&")}var I=c("$http"),u=[];r(f,function(a){u.unshift(D(a)?p.get(a):p.invoke(a))});r(g,function(a,b){var c=D(a)?p.get(a):p.invoke(a);u.splice(b,0,{response:function(a){return c(m.when(a))},responseError:function(a){return c(m.reject(a))}})}); +q.pendingRequests=[];(function(a){r(arguments,function(a){q[a]=function(b,c){return q(t(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){r(arguments,function(a){q[a]=function(b,c,d){return q(t(d||{},{method:a,url:b,data:c}))}})})("post","put");q.defaults=e;return q}]}function od(b){if(8>=P&&(!b.match(/^(get|post|head|put|delete|options)$/i)||!C.XMLHttpRequest))return new C.ActiveXObject("Microsoft.XMLHTTP");if(C.XMLHttpRequest)return new C.XMLHttpRequest;throw E("$httpBackend")("noxhr"); +}function pd(){this.$get=["$browser","$window","$document",function(b,a,c){return qd(b,od,b.defer,a.angular.callbacks,c[0])}]}function qd(b,a,c,d,e){function f(a,b){var c=e.createElement("script"),d=function(){c.onreadystatechange=c.onload=c.onerror=null;e.body.removeChild(c);b&&b()};c.type="text/javascript";c.src=a;P&&8>=P?c.onreadystatechange=function(){/loaded|complete/.test(c.readyState)&&d()}:c.onload=c.onerror=function(){d()};e.body.appendChild(c);return d}var g=-1;return function(e,n,k,l,m, +p,q,A){function B(){u=g;W&&W();y&&y.abort()}function I(a,d,e,f){S&&c.cancel(S);W=y=null;d=0===d?e?200:404:d;a(1223==d?204:d,e,f);b.$$completeOutstandingRequest(w)}var u;b.$$incOutstandingRequestCount();n=n||b.url();if("jsonp"==O(e)){var G="_"+(d.counter++).toString(36);d[G]=function(a){d[G].data=a};var W=f(n.replace("JSON_CALLBACK","angular.callbacks."+G),function(){d[G].data?I(l,200,d[G].data):I(l,u||-2);d[G]=Ba.noop})}else{var y=a(e);y.open(e,n,!0);r(m,function(a,b){v(a)&&y.setRequestHeader(b,a)}); +y.onreadystatechange=function(){if(y&&4==y.readyState){var a=null,b=null;u!==g&&(a=y.getAllResponseHeaders(),b="response"in y?y.response:y.responseText);I(l,u||y.status,b,a)}};q&&(y.withCredentials=!0);if(A)try{y.responseType=A}catch(Y){if("json"!==A)throw Y;}y.send(k||null)}if(0=h&&(m.resolve(q),l(p.$$intervalId),delete e[p.$$intervalId]); +A||b.$apply()},g);e[p.$$intervalId]=m;return p}var e={};d.cancel=function(a){return a&&a.$$intervalId in e?(e[a.$$intervalId].reject("canceled"),clearInterval(a.$$intervalId),delete e[a.$$intervalId],!0):!1};return d}]}function td(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")", +gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy", +mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(b){return 1===b?"one":"other"}}}}function rc(b){b=b.split("/");for(var a=b.length;a--;)b[a]=xb(b[a]);return b.join("/")}function sc(b,a,c){b=xa(b,c);a.$$protocol=b.protocol;a.$$host=b.hostname;a.$$port=Q(b.port)||ud[b.protocol]||null}function tc(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=xa(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=Yb(b.search);a.$$hash=decodeURIComponent(b.hash); +a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ma(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Xa(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Ib(b){return b.substr(0,Xa(b).lastIndexOf("/")+1)}function uc(b,a){this.$$html5=!0;a=a||"";var c=Ib(b);sc(b,this,b);this.$$parse=function(a){var e=ma(c,a);if(!D(e))throw Jb("ipthprfx",a,c);tc(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Zb(this.$$search),b=this.$$hash? +"#"+xb(this.$$hash):"";this.$$url=rc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$rewrite=function(d){var e;if((e=ma(b,d))!==s)return d=e,(e=ma(a,e))!==s?c+(ma("/",e)||e):b+d;if((e=ma(c,d))!==s)return c+e;if(c==d+"/")return c}}function Kb(b,a){var c=Ib(b);sc(b,this,b);this.$$parse=function(d){var e=ma(b,d)||ma(c,d),e="#"==e.charAt(0)?ma(a,e):this.$$html5?e:"";if(!D(e))throw Jb("ihshprfx",d,a);tc(e,this,b);d=this.$$path;var f=/^\/?.*?:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b, +""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Zb(this.$$search),e=this.$$hash?"#"+xb(this.$$hash):"";this.$$url=rc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$rewrite=function(a){if(Xa(b)==Xa(a))return a}}function vc(b,a){this.$$html5=!0;Kb.apply(this,arguments);var c=Ib(b);this.$$rewrite=function(d){var e;if(b==Xa(d))return d;if(e=ma(c,d))return b+a+e;if(c===d+"/")return c}}function nb(b){return function(){return this[b]}} +function wc(b,a){return function(c){if(x(c))return this[b];this[b]=a(c);this.$$compose();return this}}function vd(){var b="",a=!1;this.hashPrefix=function(a){return v(a)?(b=a,this):b};this.html5Mode=function(b){return v(b)?(a=b,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,f){function g(a){c.$broadcast("$locationChangeSuccess",h.absUrl(),a)}var h,n=d.baseHref(),k=d.url();a?(n=k.substring(0,k.indexOf("/",k.indexOf("//")+2))+(n||"/"),e=e.history?uc:vc):(n=Xa(k), +e=Kb);h=new e(n,"#"+b);h.$$parse(h.$$rewrite(k));f.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var b=z(a.target);"a"!==O(b[0].nodeName);)if(b[0]===f[0]||!(b=b.parent())[0])return;var e=b.prop("href");Z(e)&&"[object SVGAnimatedString]"===e.toString()&&(e=xa(e.animVal).href);var g=h.$$rewrite(e);e&&(!b.attr("target")&&g&&!a.isDefaultPrevented())&&(a.preventDefault(),g!=d.url()&&(h.$$parse(g),c.$apply(),C.angular["ff-684208-preventDefault"]=!0))}});h.absUrl()!=k&&d.url(h.absUrl(), +!0);d.onUrlChange(function(a){h.absUrl()!=a&&(c.$evalAsync(function(){var b=h.absUrl();h.$$parse(a);c.$broadcast("$locationChangeStart",a,b).defaultPrevented?(h.$$parse(b),d.url(b)):g(b)}),c.$$phase||c.$digest())});var l=0;c.$watch(function(){var a=d.url(),b=h.$$replace;l&&a==h.absUrl()||(l++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",h.absUrl(),a).defaultPrevented?h.$$parse(a):(d.url(h.absUrl(),b),g(a))}));h.$$replace=!1;return l});return h}]}function wd(){var b=!0,a=this;this.debugEnabled= +function(a){return v(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||w;a=!1;try{a=!!e.apply}catch(n){}return a?function(){var a=[];r(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"), +warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function ea(b,a){if("constructor"===b)throw ya("isecfld",a);return b}function Ya(b,a){if(b){if(b.constructor===b)throw ya("isecfn",a);if(b.document&&b.location&&b.alert&&b.setInterval)throw ya("isecwindow",a);if(b.children&&(b.nodeName||b.on&&b.find))throw ya("isecdom",a);}return b}function ob(b,a,c,d,e){e=e||{};a=a.split(".");for(var f,g=0;1e?xc(d[0],d[1],d[2],d[3],d[4],c,a):function(b,f){var h=0,g;do g=xc(d[h++],d[h++],d[h++],d[h++],d[h++],c,a)(b,f),f=s,b=g;while(ha)for(b in h++,d)d.hasOwnProperty(b)&&!e.hasOwnProperty(b)&&(l--,delete d[b])}else d!== +e&&(d=e,h++);return h},function(){b(e,d,c)})},$digest:function(){var d,f,h,g,k=this.$$asyncQueue,l=this.$$postDigestQueue,r,y,s=b,S,L=[],v,t,M;n("$digest");c=null;do{y=!1;for(S=this;k.length;){try{M=k.shift(),M.scope.$eval(M.expression)}catch(z){p.$$phase=null,e(z)}c=null}a:do{if(g=S.$$watchers)for(r=g.length;r--;)try{if(d=g[r])if((f=d.get(S))!==(h=d.last)&&!(d.eq?ta(f,h):"number"==typeof f&&"number"==typeof h&&isNaN(f)&&isNaN(h)))y=!0,c=d,d.last=d.eq?ca(f):f,d.fn(f,h===m?f:h,S),5>s&&(v=4-s,L[v]|| +(L[v]=[]),t=N(d.exp)?"fn: "+(d.exp.name||d.exp.toString()):d.exp,t+="; newVal: "+oa(f)+"; oldVal: "+oa(h),L[v].push(t));else if(d===c){y=!1;break a}}catch(D){p.$$phase=null,e(D)}if(!(g=S.$$childHead||S!==this&&S.$$nextSibling))for(;S!==this&&!(g=S.$$nextSibling);)S=S.$parent}while(S=g);if((y||k.length)&&!s--)throw p.$$phase=null,a("infdig",b,oa(L));}while(y||k.length);for(p.$$phase=null;l.length;)try{l.shift()()}catch(w){e(w)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy"); +this.$$destroyed=!0;this!==p&&(r(this.$$listenerCount,cb(null,l,this)),a.$$childHead==this&&(a.$$childHead=this.$$nextSibling),a.$$childTail==this&&(a.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null)}},$eval:function(a,b){return f(a)(this,b)},$evalAsync:function(a){p.$$phase||p.$$asyncQueue.length|| +g.defer(function(){p.$$asyncQueue.length&&p.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return n("$apply"),this.$eval(a)}catch(b){e(b)}finally{p.$$phase=null;try{p.$digest()}catch(c){throw e(c),c;}}},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){c[bb(c, +b)]=null;l(e,1,a)}},$emit:function(a,b){var c=[],d,f=this,h=!1,g={name:a,targetScope:f,stopPropagation:function(){h=!0},preventDefault:function(){g.defaultPrevented=!0},defaultPrevented:!1},k=[g].concat(ua.call(arguments,1)),n,l;do{d=f.$$listeners[a]||c;g.currentScope=f;n=0;for(l=d.length;nc.msieDocumentMode)throw ra("iequirks");var e=ca(fa);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=Aa);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:function(a,c){return e.getTrusted(b,d(a,c))}};var f=e.parseAs, +g=e.getTrusted,h=e.trustAs;r(fa,function(a,b){var c=O(b);e[Ra("parse_as_"+c)]=function(b){return f(a,b)};e[Ra("get_trusted_"+c)]=function(b){return g(a,b)};e[Ra("trust_as_"+c)]=function(b){return h(a,b)}});return e}]}function Hd(){this.$get=["$window","$document",function(b,a){var c={},d=Q((/android (\d+)/.exec(O((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g=f.documentMode,h,n=/^(Moz|webkit|O|ms)(?=[A-Z])/,k=f.body&&f.body.style,l=!1,m=!1;if(k){for(var p in k)if(l= +n.exec(p)){h=l[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in k&&"webkit");l=!!("transition"in k||h+"Transition"in k);m=!!("animation"in k||h+"Animation"in k);!d||l&&m||(l=D(f.body.style.webkitTransition),m=D(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hashchange:"onhashchange"in b&&(!g||7b;b=Math.abs(b);var g=b+"",h="",n=[],k=!1;if(-1!==g.indexOf("e")){var l=g.match(/([\d\.]+)e(-?)(\d+)/);l&&"-"==l[2]&&l[3]>e+1?g="0":(h=g,k=!0)}if(k)0b)&&(h=b.toFixed(e));else{g=(g.split(Ic)[1]||"").length; +x(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));g=Math.pow(10,e);b=Math.round(b*g)/g;b=(""+b).split(Ic);g=b[0];b=b[1]||"";var l=0,m=a.lgSize,p=a.gSize;if(g.length>=m+p)for(l=g.length-m,k=0;kb&&(d="-",b=-b); +for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return Nb(e,a,d)}}function pb(b,a){return function(c,d){var e=c["get"+b](),f=Ia(a?"SHORT"+b:b);return d[f][e]}}function Ec(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,n=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=Q(b[9]+b[10]),g=Q(b[9]+b[11]));h.call(a,Q(b[1]),Q(b[2])-1,Q(b[3])); +f=Q(b[4]||0)-f;g=Q(b[5]||0)-g;h=Q(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));n.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e){var f="",g=[],h,n;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;D(c)&&(c=Qd.test(c)?Q(c):a(c));wb(c)&&(c=new Date(c));if(!La(c))return c;for(;e;)(n=Rd.exec(e))?(g=g.concat(ua.call(n,1)),e=g.pop()):(g.push(e),e=null);r(g,function(a){h=Sd[a];f+=h?h(c,b.DATETIME_FORMATS): +a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return f}}function Ld(){return function(b){return oa(b,!0)}}function Md(){return function(b,a){if(!H(b)&&!D(b))return b;a=Q(a);if(D(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0a||37<=a&&40>=a)||k()});if(e.hasEvent("paste"))a.on("paste cut",k)}a.on("change",h);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)};var l=c.ngPattern;l&&((e=l.match(/^\/(.*)\/([gim]*)$/))?(l=RegExp(e[1],e[2]),e=function(a){return na(d,"pattern",d.$isEmpty(a)||l.test(a),a)}):e=function(c){var e=b.$eval(l);if(!e||!e.test)throw E("ngPattern")("noregexp",l,e,ga(a));return na(d,"pattern",d.$isEmpty(c)||e.test(c),c)},d.$formatters.push(e),d.$parsers.push(e));if(c.ngMinlength){var m= +Q(c.ngMinlength);e=function(a){return na(d,"minlength",d.$isEmpty(a)||a.length>=m,a)};d.$parsers.push(e);d.$formatters.push(e)}if(c.ngMaxlength){var p=Q(c.ngMaxlength);e=function(a){return na(d,"maxlength",d.$isEmpty(a)||a.length<=p,a)};d.$parsers.push(e);d.$formatters.push(e)}}function Ob(b,a){b="ngClass"+b;return function(){return{restrict:"AC",link:function(c,d,e){function f(b){if(!0===a||c.$index%2===a){var d=g(b||"");h?ta(b,h)||e.$updateClass(d,g(h)):e.$addClass(d)}h=ca(b)}function g(a){if(H(a))return a.join(" "); +if(Z(a)){var b=[];r(a,function(a,c){a&&b.push(c)});return b.join(" ")}return a}var h;c.$watch(e[b],f,!0);e.$observe("class",function(a){f(c.$eval(e[b]))});"ngClass"!==b&&c.$watch("$index",function(d,f){var h=d&1;if(h!==f&1){var m=g(c.$eval(e[b]));h===a?e.$addClass(m):e.$removeClass(m)}})}}}}var O=function(b){return D(b)?b.toLowerCase():b},Pd=Object.prototype.hasOwnProperty,Ia=function(b){return D(b)?b.toUpperCase():b},P,z,Ca,ua=[].slice,Td=[].push,Ma=Object.prototype.toString,Oa=E("ng"),Ba=C.angular|| +(C.angular={}),Va,Ga,ja=["0","0","0"];P=Q((/msie (\d+)/.exec(O(navigator.userAgent))||[])[1]);isNaN(P)&&(P=Q((/trident\/.*; rv:(\d+)/.exec(O(navigator.userAgent))||[])[1]));w.$inject=[];Aa.$inject=[];var da=function(){return String.prototype.trim?function(b){return D(b)?b.trim():b}:function(b){return D(b)?b.replace(/^\s\s*/,"").replace(/\s\s*$/,""):b}}();Ga=9>P?function(b){b=b.nodeName?b:b[0];return b.scopeName&&"HTML"!=b.scopeName?Ia(b.scopeName+":"+b.nodeName):b.nodeName}:function(b){return b.nodeName? +b.nodeName:b[0].nodeName};var Vc=/[A-Z]/g,Ud={full:"1.2.13",major:1,minor:2,dot:13,codeName:"romantic-transclusion"},Sa=R.cache={},eb=R.expando="ng-"+(new Date).getTime(),Zc=1,Kc=C.document.addEventListener?function(b,a,c){b.addEventListener(a,c,!1)}:function(b,a,c){b.attachEvent("on"+a,c)},Eb=C.document.removeEventListener?function(b,a,c){b.removeEventListener(a,c,!1)}:function(b,a,c){b.detachEvent("on"+a,c)};R._data=function(b){return this.cache[b[this.expando]]||{}};var Xc=/([\:\-\_]+(.))/g,Yc= +/^moz([A-Z])/,Bb=E("jqLite"),Fa=R.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===T.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),R(C).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?z(this[b]):z(this[this.length+b])},length:0,push:Td,sort:[].sort,splice:[].splice},ib={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){ib[O(b)]=b});var ic= +{};r("input select option textarea button form details".split(" "),function(b){ic[Ia(b)]=!0});r({data:ec,inheritedData:hb,scope:function(b){return z(b).data("$scope")||hb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return z(b).data("$isolateScope")||z(b).data("$isolateScopeNoTemplate")},controller:fc,injector:function(b){return hb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Fb,css:function(b,a,c){a=Ra(a);if(v(c))b.style[a]=c;else{var d;8>=P&&(d= +b.currentStyle&&b.currentStyle[a],""===d&&(d="auto"));d=d||b.style[a];8>=P&&(d=""===d?s:d);return d}},attr:function(b,a,c){var d=O(a);if(ib[d])if(v(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||w).specified?d:s;else if(v(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?s:b},prop:function(b,a,c){if(v(c))b[a]=c;else return b[a]},text:function(){function b(b,d){var e=a[b.nodeType];if(x(d))return e? +b[e]:"";b[e]=d}var a=[];9>P?(a[1]="innerText",a[3]="nodeValue"):a[1]=a[3]="textContent";b.$dv="";return b}(),val:function(b,a){if(x(a)){if("SELECT"===Ga(b)&&b.multiple){var c=[];r(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(x(a))return b.innerHTML;for(var c=0,d=b.childNodes;c":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a, +c)&e(a,c)},"|":function(a,c,d,e){return e(a,c)(a,c,d(a,c))},"!":function(a,c,d){return!d(a,c)}},Yd={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Mb=function(a){this.options=a};Mb.prototype={constructor:Mb,lex:function(a){this.text=a;this.index=0;this.ch=s;this.lastCh=":";this.tokens=[];var c;for(a=[];this.index=a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=v(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw ya("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(Za.ZERO,a.fn, +this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this,d=this.expect().text,e=yc(d,this.options,this.text);return t(function(c,d,h){return e(h||a(c,d))},{assign:function(e,g,h){return ob(a(e,h),d,g,c.text,c.options)}})},objectIndex:function(a){var c=this,d=this.expression();this.consume("]");return t(function(e,f){var g=a(e,f),h=d(e,f),n;if(!g)return s;(g=Ya(g[h],c.text))&&(g.then&&c.options.unwrapPromises)&&(n=g,"$$v"in g||(n.$$v=s,n.then(function(a){n.$$v= +a})),g=g.$$v);return g},{assign:function(e,f,g){var h=d(e,g);return Ya(a(e,g),c.text)[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this;return function(f,g){for(var h=[],n=c?c(f,g):f,k=0;ka.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Nb(Math[0=P&&(c.href||c.name||c.$set("href",""),a.append(T.createComment("IE fix")));if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){var f="[object SVGAnimatedString]"===Ma.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}),Pb={};r(ib,function(a,c){if("multiple"!=a){var d=la("ng-"+c);Pb[d]=function(){return{priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,!!a)})}}}}});r(["src","srcset","href"],function(a){var c= +la("ng-"+a);Pb[c]=function(){return{priority:99,link:function(d,e,f){f.$observe(c,function(c){c&&(f.$set(a,c),P&&e.prop(a,f[a]))})}}}});var sb={$addControl:w,$removeControl:w,$setValidity:w,$setDirty:w,$setPristine:w};Jc.$inject=["$element","$attrs","$scope"];var Lc=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:Jc,compile:function(){return{pre:function(a,e,f,g){if(!f.action){var h=function(a){a.preventDefault?a.preventDefault():a.returnValue=!1};Kc(e[0], +"submit",h);e.on("$destroy",function(){c(function(){Eb(e[0],"submit",h)},0,!1)})}var n=e.parent().controller("form"),k=f.name||f.ngForm;k&&ob(a,k,g,k);if(n)e.on("$destroy",function(){n.$removeControl(g);k&&ob(a,k,s,k);t(g,sb)})}}}}}]},$d=Lc(),ae=Lc(!0),be=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,ce=/^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i,de=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,Mc={text:ub,number:function(a,c,d,e,f,g){ub(a,c,d,e,f,g); +e.$parsers.push(function(a){var c=e.$isEmpty(a);if(c||de.test(a))return e.$setValidity("number",!0),""===a?null:c?a:parseFloat(a);e.$setValidity("number",!1);return s});e.$formatters.push(function(a){return e.$isEmpty(a)?"":""+a});d.min&&(a=function(a){var c=parseFloat(d.min);return na(e,"min",e.$isEmpty(a)||a>=c,a)},e.$parsers.push(a),e.$formatters.push(a));d.max&&(a=function(a){var c=parseFloat(d.max);return na(e,"max",e.$isEmpty(a)||a<=c,a)},e.$parsers.push(a),e.$formatters.push(a));e.$formatters.push(function(a){return na(e, +"number",e.$isEmpty(a)||wb(a),a)})},url:function(a,c,d,e,f,g){ub(a,c,d,e,f,g);a=function(a){return na(e,"url",e.$isEmpty(a)||be.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},email:function(a,c,d,e,f,g){ub(a,c,d,e,f,g);a=function(a){return na(e,"email",e.$isEmpty(a)||ce.test(a),a)};e.$formatters.push(a);e.$parsers.push(a)},radio:function(a,c,d,e){x(d.name)&&c.attr("name",$a());c.on("click",function(){c[0].checked&&a.$apply(function(){e.$setViewValue(d.value)})});e.$render=function(){c[0].checked= +d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e){var f=d.ngTrueValue,g=d.ngFalseValue;D(f)||(f=!0);D(g)||(g=!1);c.on("click",function(){a.$apply(function(){e.$setViewValue(c[0].checked)})});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==f};e.$formatters.push(function(a){return a===f});e.$parsers.push(function(a){return a?f:g})},hidden:w,button:w,submit:w,reset:w,file:w},Nc=["$browser","$sniffer",function(a,c){return{restrict:"E",require:"?ngModel", +link:function(d,e,f,g){g&&(Mc[O(f.type)]||Mc.text)(d,e,f,g,c,a)}}}],rb="ng-valid",qb="ng-invalid",Ja="ng-pristine",tb="ng-dirty",ee=["$scope","$exceptionHandler","$attrs","$element","$parse",function(a,c,d,e,f){function g(a,c){c=c?"-"+db(c,"-"):"";e.removeClass((a?qb:rb)+c).addClass((a?rb:qb)+c)}this.$modelValue=this.$viewValue=Number.NaN;this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$name=d.name;var h=f(d.ngModel), +n=h.assign;if(!n)throw E("ngModel")("nonassign",d.ngModel,ga(e));this.$render=w;this.$isEmpty=function(a){return x(a)||""===a||null===a||a!==a};var k=e.inheritedData("$formController")||sb,l=0,m=this.$error={};e.addClass(Ja);g(!0);this.$setValidity=function(a,c){m[a]!==!c&&(c?(m[a]&&l--,l||(g(!0),this.$valid=!0,this.$invalid=!1)):(g(!1),this.$invalid=!0,this.$valid=!1,l++),m[a]=!c,g(c,a),k.$setValidity(a,c,this))};this.$setPristine=function(){this.$dirty=!1;this.$pristine=!0;e.removeClass(tb).addClass(Ja)}; +this.$setViewValue=function(d){this.$viewValue=d;this.$pristine&&(this.$dirty=!0,this.$pristine=!1,e.removeClass(Ja).addClass(tb),k.$setDirty());r(this.$parsers,function(a){d=a(d)});this.$modelValue!==d&&(this.$modelValue=d,n(a,d),r(this.$viewChangeListeners,function(a){try{a()}catch(d){c(d)}}))};var p=this;a.$watch(function(){var c=h(a);if(p.$modelValue!==c){var d=p.$formatters,e=d.length;for(p.$modelValue=c;e--;)c=d[e](c);p.$viewValue!==c&&(p.$viewValue=c,p.$render())}return c})}],fe=function(){return{require:["ngModel", +"^?form"],controller:ee,link:function(a,c,d,e){var f=e[0],g=e[1]||sb;g.$addControl(f);a.$on("$destroy",function(){g.$removeControl(f)})}}},ge=aa({require:"ngModel",link:function(a,c,d,e){e.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),Oc=function(){return{require:"?ngModel",link:function(a,c,d,e){if(e){d.required=!0;var f=function(a){if(d.required&&e.$isEmpty(a))e.$setValidity("required",!1);else return e.$setValidity("required",!0),a};e.$formatters.push(f);e.$parsers.unshift(f);d.$observe("required", +function(){f(e.$viewValue)})}}}},he=function(){return{require:"ngModel",link:function(a,c,d,e){var f=(a=/\/(.*)\//.exec(d.ngList))&&RegExp(a[1])||d.ngList||",";e.$parsers.push(function(a){if(!x(a)){var c=[];a&&r(a.split(f),function(a){a&&c.push(da(a))});return c}});e.$formatters.push(function(a){return H(a)?a.join(", "):s});e.$isEmpty=function(a){return!a||!a.length}}}},ie=/^(true|false|\d+)$/,je=function(){return{priority:100,compile:function(a,c){return ie.test(c.ngValue)?function(a,c,f){f.$set("value", +a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},ke=sa(function(a,c,d){c.addClass("ng-binding").data("$binding",d.ngBind);a.$watch(d.ngBind,function(a){c.text(a==s?"":a)})}),le=["$interpolate",function(a){return function(c,d,e){c=a(d.attr(e.$attr.ngBindTemplate));d.addClass("ng-binding").data("$binding",c);e.$observe("ngBindTemplate",function(a){d.text(a)})}}],me=["$sce","$parse",function(a,c){return function(d,e,f){e.addClass("ng-binding").data("$binding", +f.ngBindHtml);var g=c(f.ngBindHtml);d.$watch(function(){return(g(d)||"").toString()},function(c){e.html(a.getTrustedHtml(g(d))||"")})}}],ne=Ob("",!0),oe=Ob("Odd",0),pe=Ob("Even",1),qe=sa({compile:function(a,c){c.$set("ngCloak",s);a.removeClass("ng-cloak")}}),re=[function(){return{scope:!0,controller:"@",priority:500}}],Pc={};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=la("ng-"+ +a);Pc[c]=["$parse",function(d){return{compile:function(e,f){var g=d(f[c]);return function(c,d,e){d.on(O(a),function(a){c.$apply(function(){g(c,{$event:a})})})}}}}]});var se=["$animate",function(a){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,n;c.$watch(e.ngIf,function(f){Pa(f)?n||(n=c.$new(),g(n,function(c){c[c.length++]=T.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)})):(n&&(n.$destroy(),n=null),h&&(a.leave(zb(h.clone)), +h=null))})}}}],te=["$http","$templateCache","$anchorScroll","$animate","$sce",function(a,c,d,e,f){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Ba.noop,compile:function(g,h){var n=h.ngInclude||h.src,k=h.onload||"",l=h.autoscroll;return function(g,h,q,r,B){var s=0,u,t,z=function(){u&&(u.$destroy(),u=null);t&&(e.leave(t),t=null)};g.$watch(f.parseAsResourceUrl(n),function(f){var n=function(){!v(l)||l&&!g.$eval(l)||d()},q=++s;f?(a.get(f,{cache:c}).success(function(a){if(q=== +s){var c=g.$new();r.template=a;a=B(c,function(a){z();e.enter(a,null,h,n)});u=c;t=a;u.$emit("$includeContentLoaded");g.$eval(k)}}).error(function(){q===s&&z()}),g.$emit("$includeContentRequested")):(z(),r.template=null)})}}}}],ue=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){d.html(f.template);a(d.contents())(c)}}}],ve=sa({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),we=sa({terminal:!0,priority:1E3}),xe=["$locale", +"$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,f,g){var h=g.count,n=g.$attr.when&&f.attr(g.$attr.when),k=g.offset||0,l=e.$eval(n)||{},m={},p=c.startSymbol(),q=c.endSymbol(),s=/^when(Minus)?(.+)$/;r(g,function(a,c){s.test(c)&&(l[O(c.replace("when","").replace("Minus","-"))]=f.attr(g.$attr[c]))});r(l,function(a,e){m[e]=c(a.replace(d,p+h+"-"+k+q))});e.$watch(function(){var c=parseFloat(e.$eval(h));if(isNaN(c))return"";c in l||(c=a.pluralCat(c-k));return m[c](e,f,!0)},function(a){f.text(a)})}}}], +ye=["$parse","$animate",function(a,c){var d=E("ngRepeat");return{transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,link:function(e,f,g,h,n){var k=g.ngRepeat,l=k.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),m,p,q,s,t,v,u={$id:Ea};if(!l)throw d("iexp",k);g=l[1];h=l[2];(l=l[3])?(m=a(l),p=function(a,c,d){v&&(u[v]=a);u[t]=c;u.$index=d;return m(e,u)}):(q=function(a,c){return Ea(c)},s=function(a){return a});l=g.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!l)throw d("iidexp", +g);t=l[3]||l[1];v=l[2];var G={};e.$watchCollection(h,function(a){var g,h,l=f[0],m,u={},D,M,w,x,E,J,H=[];if(vb(a))E=a,m=p||q;else{m=p||s;E=[];for(w in a)a.hasOwnProperty(w)&&"$"!=w.charAt(0)&&E.push(w);E.sort()}D=E.length;h=H.length=E.length;for(g=0;gC;)x.pop().element.remove()}for(;y.length>X;)y.pop()[0].element.remove()}var k;if(!(k=t.match(d)))throw He("iexp",t,ga(f));var l=c(k[2]||k[1]),m=k[4]||k[6],n=k[5],p=c(k[3]||""),r=c(k[2]?k[1]:m),z=c(k[7]), +w=k[8]?c(k[8]):null,y=[[{element:f,label:""}]];B&&(a(B)(e),B.removeClass("ng-scope"),B.remove());f.empty();f.on("change",function(){e.$apply(function(){var a,c=z(e)||[],d={},h,k,l,p,t,v,u;if(q)for(k=[],p=0,v=y.length;p@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}'); +//# sourceMappingURL=angular.min.js.map diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker-bs3.css b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker-bs3.css new file mode 100644 index 000000000..abcaa4681 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker-bs3.css @@ -0,0 +1,267 @@ +/*! + * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x + * + * Copyright 2013 Dan Grossman ( http://www.dangrossman.info ) + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Built for http://www.improvely.com + */ + +.daterangepicker.dropdown-menu { + max-width: none; + z-index: 3000; +} + +.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar { + float: left; + margin: 4px; +} + +.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar { + float: right; + margin: 4px; +} + +.daterangepicker .ranges { + width: 160px; + text-align: left; +} + +.daterangepicker .ranges .range_inputs>div { + float: left; +} + +.daterangepicker .ranges .range_inputs>div:nth-child(2) { + padding-left: 11px; +} + +.daterangepicker .calendar { + display: none; + max-width: 270px; +} + +.daterangepicker.show-calendar .calendar { + display: block; +} + +.daterangepicker .calendar.single .calendar-date { + border: none; +} + +.daterangepicker .calendar th, .daterangepicker .calendar td { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + white-space: nowrap; + text-align: center; + min-width: 32px; +} + +.daterangepicker .daterangepicker_start_input label, +.daterangepicker .daterangepicker_end_input label { + color: #333; + display: block; + font-size: 11px; + font-weight: normal; + height: 20px; + line-height: 20px; + margin-bottom: 2px; + text-shadow: #fff 1px 1px 0px; + text-transform: uppercase; + width: 74px; +} + +.daterangepicker .ranges input { + font-size: 11px; +} + +.daterangepicker .ranges .input-mini { + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; + color: #555; + display: block; + font-size: 11px; + height: 30px; + line-height: 30px; + vertical-align: middle; + margin: 0 0 10px 0; + padding: 0 6px; + width: 74px; +} + +.daterangepicker .ranges ul { + list-style: none; + margin: 0; + padding: 0; +} + +.daterangepicker .ranges li { + font-size: 13px; + background: #f5f5f5; + border: 1px solid #f5f5f5; + color: #08c; + padding: 3px 12px; + margin-bottom: 8px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + cursor: pointer; +} + +.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover { + background: #08c; + border: 1px solid #08c; + color: #fff; +} + +.daterangepicker .calendar-date { + border: 1px solid #ddd; + padding: 4px; + border-radius: 4px; + background: #fff; +} + +.daterangepicker .calendar-time { + text-align: center; + margin: 8px auto 0 auto; + line-height: 30px; +} + +.daterangepicker { + position: absolute; + background: #fff; + top: 100px; + left: 20px; + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.daterangepicker.opensleft:before { + position: absolute; + top: -7px; + right: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensleft:after { + position: absolute; + top: -6px; + right: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker.opensright:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensright:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker table { + width: 100%; + margin: 0; +} + +.daterangepicker td, .daterangepicker th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + cursor: pointer; + white-space: nowrap; +} + +.daterangepicker td.off { + color: #999; +} + +.daterangepicker td.disabled { + color: #999; +} + +.daterangepicker td.available:hover, .daterangepicker th.available:hover { + background: #eee; +} + +.daterangepicker td.in-range { + background: #ebf4f8; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.daterangepicker td.active, .daterangepicker td.active:hover { + background-color: #357ebd; + border-color: #3071a9; + color: #fff; +} + +.daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; +} + +.daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; +} + +.daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; +} + +.daterangepicker select.yearselect { + width: 40%; +} + +.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.ampmselect { + width: 50px; + margin-bottom: 0; +} + +.daterangepicker_start_input { + float: left; +} + +.daterangepicker_end_input { + float: left; + padding-left: 11px +} + +.daterangepicker th.month { + width: auto; +} \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker.js b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker.js new file mode 100644 index 000000000..579e87567 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker.js @@ -0,0 +1,1026 @@ +/** + * @version: 1.3.7 + * @author: Dan Grossman http://www.dangrossman.info/ + * @date: 2014-04-29 + * @copyright: Copyright (c) 2012-2014 Dan Grossman. All rights reserved. + * @license: Licensed under Apache License v2.0. See http://www.apache.org/licenses/LICENSE-2.0 + * @website: http://www.improvely.com/ + */ +!function ($, moment) { + + var DateRangePicker = function (element, options, cb) { + + // by default, the daterangepicker element is placed at the bottom of HTML body + this.parentEl = 'body'; + + //element that triggered the date range picker + this.element = $(element); + + //create the picker HTML object + var DRPTemplate = ''; + + //custom options + if (typeof options !== 'object' || options === null) + options = {}; + + this.parentEl = (typeof options === 'object' && options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl); + this.container = $(DRPTemplate).appendTo(this.parentEl); + + this.setOptions(options, cb); + + //apply CSS classes and labels to buttons + var c = this.container; + $.each(this.buttonClasses, function (idx, val) { + c.find('button').addClass(val); + }); + this.container.find('.daterangepicker_start_input label').html(this.locale.fromLabel); + this.container.find('.daterangepicker_end_input label').html(this.locale.toLabel); + if (this.applyClass.length) + this.container.find('.applyBtn').addClass(this.applyClass); + if (this.cancelClass.length) + this.container.find('.cancelBtn').addClass(this.cancelClass); + this.container.find('.applyBtn').html(this.locale.applyLabel); + this.container.find('.cancelBtn').html(this.locale.cancelLabel); + + //event listeners + + this.container.find('.calendar') + .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this)) + .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this)) + .on('click.daterangepicker', 'td.available', $.proxy(this.clickDate, this)) + .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.enterDate, this)) + .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this)) + .on('change.daterangepicker', 'select.yearselect', $.proxy(this.updateMonthYear, this)) + .on('change.daterangepicker', 'select.monthselect', $.proxy(this.updateMonthYear, this)) + .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.ampmselect', $.proxy(this.updateTime, this)); + + this.container.find('.ranges') + .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this)) + .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this)) + .on('click.daterangepicker', '.daterangepicker_start_input,.daterangepicker_end_input', $.proxy(this.showCalendars, this)) + .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this)) + .on('mouseenter.daterangepicker', 'li', $.proxy(this.enterRange, this)) + .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this)); + + if (this.element.is('input')) { + this.element.on({ + 'click.daterangepicker': $.proxy(this.show, this), + 'focus.daterangepicker': $.proxy(this.show, this), + 'keyup.daterangepicker': $.proxy(this.updateFromControl, this) + }); + } else { + this.element.on('click.daterangepicker', $.proxy(this.toggle, this)); + } + + }; + + DateRangePicker.prototype = { + + constructor: DateRangePicker, + + setOptions: function(options, callback) { + + this.startDate = moment().startOf('day'); + this.endDate = moment().endOf('day'); + this.minDate = false; + this.maxDate = false; + this.dateLimit = false; + + this.showDropdowns = false; + this.showWeekNumbers = false; + this.timePicker = false; + this.timePickerIncrement = 30; + this.timePicker12Hour = true; + this.singleDatePicker = false; + this.ranges = {}; + + this.opens = 'right'; + if (this.element.hasClass('pull-right')) + this.opens = 'left'; + + this.buttonClasses = ['btn', 'btn-small']; + this.applyClass = 'btn-success'; + this.cancelClass = 'btn-default'; + + this.format = 'MM/DD/YYYY'; + this.separator = ' - '; + + this.locale = { + applyLabel: 'Apply', + cancelLabel: 'Cancel', + fromLabel: 'From', + toLabel: 'To', + weekLabel: 'W', + customRangeLabel: 'Custom Range', + daysOfWeek: moment()._lang._weekdaysMin.slice(), + monthNames: moment()._lang._monthsShort.slice(), + firstDay: 0 + }; + + this.cb = function () { }; + + if (typeof options.format === 'string') + this.format = options.format; + + if (typeof options.separator === 'string') + this.separator = options.separator; + + if (typeof options.startDate === 'string') + this.startDate = moment(options.startDate, this.format); + + if (typeof options.endDate === 'string') + this.endDate = moment(options.endDate, this.format); + + if (typeof options.minDate === 'string') + this.minDate = moment(options.minDate, this.format); + + if (typeof options.maxDate === 'string') + this.maxDate = moment(options.maxDate, this.format); + + if (typeof options.startDate === 'object') + this.startDate = moment(options.startDate); + + if (typeof options.endDate === 'object') + this.endDate = moment(options.endDate); + + if (typeof options.minDate === 'object') + this.minDate = moment(options.minDate); + + if (typeof options.maxDate === 'object') + this.maxDate = moment(options.maxDate); + + if (typeof options.applyClass === 'string') + this.applyClass = options.applyClass; + + if (typeof options.cancelClass === 'string') + this.cancelClass = options.cancelClass; + + if (typeof options.dateLimit === 'object') + this.dateLimit = options.dateLimit; + + // update day names order to firstDay + if (typeof options.locale === 'object') { + + if (typeof options.locale.daysOfWeek === 'object') { + // Create a copy of daysOfWeek to avoid modification of original + // options object for reusability in multiple daterangepicker instances + this.locale.daysOfWeek = options.locale.daysOfWeek.slice(); + } + + if (typeof options.locale.monthNames === 'object') { + this.locale.monthNames = options.locale.monthNames.slice(); + } + + if (typeof options.locale.firstDay === 'number') { + this.locale.firstDay = options.locale.firstDay; + var iterator = options.locale.firstDay; + while (iterator > 0) { + this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()); + iterator--; + } + } + + if (typeof options.locale.applyLabel === 'string') { + this.locale.applyLabel = options.locale.applyLabel; + } + + if (typeof options.locale.cancelLabel === 'string') { + this.locale.cancelLabel = options.locale.cancelLabel; + } + + if (typeof options.locale.fromLabel === 'string') { + this.locale.fromLabel = options.locale.fromLabel; + } + + if (typeof options.locale.toLabel === 'string') { + this.locale.toLabel = options.locale.toLabel; + } + + if (typeof options.locale.weekLabel === 'string') { + this.locale.weekLabel = options.locale.weekLabel; + } + + if (typeof options.locale.customRangeLabel === 'string') { + this.locale.customRangeLabel = options.locale.customRangeLabel; + } + } + + if (typeof options.opens === 'string') + this.opens = options.opens; + + if (typeof options.showWeekNumbers === 'boolean') { + this.showWeekNumbers = options.showWeekNumbers; + } + + if (typeof options.buttonClasses === 'string') { + this.buttonClasses = [options.buttonClasses]; + } + + if (typeof options.buttonClasses === 'object') { + this.buttonClasses = options.buttonClasses; + } + + if (typeof options.showDropdowns === 'boolean') { + this.showDropdowns = options.showDropdowns; + } + + if (typeof options.singleDatePicker === 'boolean') { + this.singleDatePicker = options.singleDatePicker; + } + + if (typeof options.timePicker === 'boolean') { + this.timePicker = options.timePicker; + } + + if (typeof options.timePickerIncrement === 'number') { + this.timePickerIncrement = options.timePickerIncrement; + } + + if (typeof options.timePicker12Hour === 'boolean') { + this.timePicker12Hour = options.timePicker12Hour; + } + + var start, end, range; + + //if no start/end dates set, check if an input element contains initial values + if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') { + if ($(this.element).is('input[type=text]')) { + var val = $(this.element).val(); + var split = val.split(this.separator); + start = end = null; + if (split.length == 2) { + start = moment(split[0], this.format); + end = moment(split[1], this.format); + } else if (this.singleDatePicker) { + start = moment(val, this.format); + end = moment(val, this.format); + } + if (start !== null && end !== null) { + this.startDate = start; + this.endDate = end; + } + } + } + + if (typeof options.ranges === 'object') { + for (range in options.ranges) { + + start = moment(options.ranges[range][0]); + end = moment(options.ranges[range][1]); + + // If we have a min/max date set, bound this range + // to it, but only if it would otherwise fall + // outside of the min/max. + if (this.minDate && start.isBefore(this.minDate)) + start = moment(this.minDate); + + if (this.maxDate && end.isAfter(this.maxDate)) + end = moment(this.maxDate); + + // If the end of the range is before the minimum (if min is set) OR + // the start of the range is after the max (also if set) don't display this + // range option. + if ((this.minDate && end.isBefore(this.minDate)) || (this.maxDate && start.isAfter(this.maxDate))) { + continue; + } + + this.ranges[range] = [start, end]; + } + + var list = '
        '; + for (range in this.ranges) { + list += '
      • ' + range + '
      • '; + } + list += '
      • ' + this.locale.customRangeLabel + '
      • '; + list += '
      '; + this.container.find('.ranges ul').remove(); + this.container.find('.ranges').prepend(list); + } + + if (typeof callback === 'function') { + this.cb = callback; + } + + if (!this.timePicker) { + this.startDate = this.startDate.startOf('day'); + this.endDate = this.endDate.endOf('day'); + } + + if (this.singleDatePicker) { + this.opens = 'right'; + this.container.find('.calendar.right').show(); + this.container.find('.calendar.left').hide(); + this.container.find('.ranges').hide(); + if (!this.container.find('.calendar.right').hasClass('single')) + this.container.find('.calendar.right').addClass('single'); + } else { + this.container.find('.calendar.right').removeClass('single'); + this.container.find('.ranges').show(); + } + + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + this.oldChosenLabel = this.chosenLabel; + + this.leftCalendar = { + month: moment([this.startDate.year(), this.startDate.month(), 1, this.startDate.hour(), this.startDate.minute()]), + calendar: [] + }; + + this.rightCalendar = { + month: moment([this.endDate.year(), this.endDate.month(), 1, this.endDate.hour(), this.endDate.minute()]), + calendar: [] + }; + + if (this.opens == 'right') { + //swap calendar positions + var left = this.container.find('.calendar.left'); + var right = this.container.find('.calendar.right'); + left.removeClass('left').addClass('right'); + right.removeClass('right').addClass('left'); + } + + if (typeof options.ranges === 'undefined' && !this.singleDatePicker) { + this.container.addClass('show-calendar'); + } + + this.container.addClass('opens' + this.opens); + + this.updateView(); + this.updateCalendars(); + + }, + + setStartDate: function(startDate) { + if (typeof startDate === 'string') + this.startDate = moment(startDate, this.format); + + if (typeof startDate === 'object') + this.startDate = moment(startDate); + + if (!this.timePicker) + this.startDate = this.startDate.startOf('day'); + + this.oldStartDate = this.startDate.clone(); + + this.updateView(); + this.updateCalendars(); + }, + + setEndDate: function(endDate) { + if (typeof endDate === 'string') + this.endDate = moment(endDate, this.format); + + if (typeof endDate === 'object') + this.endDate = moment(endDate); + + if (!this.timePicker) + this.endDate = this.endDate.endOf('day'); + + this.oldEndDate = this.endDate.clone(); + + this.updateView(); + this.updateCalendars(); + }, + + updateView: function () { + this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()); + this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()); + this.updateFormInputs(); + }, + + updateFormInputs: function () { + this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.format)); + this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.format)); + + if (this.startDate.isSame(this.endDate) || this.startDate.isBefore(this.endDate)) { + this.container.find('button.applyBtn').removeAttr('disabled'); + } else { + this.container.find('button.applyBtn').attr('disabled', 'disabled'); + } + }, + + updateFromControl: function () { + if (!this.element.is('input')) return; + if (!this.element.val().length) return; + + var dateString = this.element.val().split(this.separator), + start = null, + end = null; + + if(dateString.length === 2) { + start = moment(dateString[0], this.format); + end = moment(dateString[1], this.format); + } + + if (this.singleDatePicker || start === null || end === null) { + start = moment(this.element.val(), this.format); + end = start; + } + + if (end.isBefore(start)) return; + + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + + this.startDate = start; + this.endDate = end; + + if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) + this.notify(); + + this.updateCalendars(); + }, + + notify: function () { + this.updateView(); + this.cb(this.startDate, this.endDate, this.chosenLabel); + }, + + move: function () { + var parentOffset = { top: 0, left: 0 }; + if (!this.parentEl.is('body')) { + parentOffset = { + top: this.parentEl.offset().top - this.parentEl.scrollTop(), + left: this.parentEl.offset().left - this.parentEl.scrollLeft() + }; + } + + if (this.opens == 'left') { + this.container.css({ + top: this.element.offset().top + this.element.outerHeight() - parentOffset.top, + right: $(window).width() - this.element.offset().left - this.element.outerWidth() - parentOffset.left, + left: 'auto' + }); + if (this.container.offset().left < 0) { + this.container.css({ + right: 'auto', + left: 9 + }); + } + } else { + this.container.css({ + top: this.element.offset().top + this.element.outerHeight() - parentOffset.top, + left: this.element.offset().left - parentOffset.left, + right: 'auto' + }); + if (this.container.offset().left + this.container.outerWidth() > $(window).width()) { + this.container.css({ + left: 'auto', + right: 0 + }); + } + } + }, + + toggle: function (e) { + if (this.element.hasClass('active')) { + this.hide(); + } else { + this.show(); + } + }, + + show: function (e) { + this.element.addClass('active'); + this.container.show(); + this.move(); + + // Create a click proxy that is private to this instance of datepicker, for unbinding + this._outsideClickProxy = $.proxy(function (e) { this.outsideClick(e); }, this); + // Bind global datepicker mousedown for hiding and + $(document) + .on('mousedown.daterangepicker', this._outsideClickProxy) + // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them + .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy) + // and also close when focus changes to outside the picker (eg. tabbing between controls) + .on('focusin.daterangepicker', this._outsideClickProxy); + + this.element.trigger('show.daterangepicker', this); + }, + + outsideClick: function (e) { + var target = $(e.target); + // if the page is clicked anywhere except within the daterangerpicker/button + // itself then call this.hide() + if ( + target.closest(this.element).length || + target.closest(this.container).length || + target.closest('.calendar-date').length + ) return; + this.hide(); + }, + + hide: function (e) { + $(document) + .off('mousedown.daterangepicker', this._outsideClickProxy) + .off('click.daterangepicker', this._outsideClickProxy) + .off('focusin.daterangepicker', this._outsideClickProxy); + + this.element.removeClass('active'); + this.container.hide(); + + if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) + this.notify(); + + this.oldStartDate = this.startDate.clone(); + this.oldEndDate = this.endDate.clone(); + + this.element.trigger('hide.daterangepicker', this); + }, + + enterRange: function (e) { + // mouse pointer has entered a range label + var label = e.target.innerHTML; + if (label == this.locale.customRangeLabel) { + this.updateView(); + } else { + var dates = this.ranges[label]; + this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.format)); + this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.format)); + } + }, + + showCalendars: function() { + this.container.addClass('show-calendar'); + this.move(); + }, + + hideCalendars: function() { + this.container.removeClass('show-calendar'); + }, + + updateInputText: function() { + if (this.element.is('input') && !this.singleDatePicker) { + this.element.val(this.startDate.format(this.format) + this.separator + this.endDate.format(this.format)); + } else if (this.element.is('input')) { + this.element.val(this.startDate.format(this.format)); + } + }, + + clickRange: function (e) { + var label = e.target.innerHTML; + this.chosenLabel = label; + if (label == this.locale.customRangeLabel) { + this.showCalendars(); + } else { + var dates = this.ranges[label]; + + this.startDate = dates[0]; + this.endDate = dates[1]; + + if (!this.timePicker) { + this.startDate.startOf('day'); + this.endDate.endOf('day'); + } + + this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()).hour(this.startDate.hour()).minute(this.startDate.minute()); + this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()).hour(this.endDate.hour()).minute(this.endDate.minute()); + this.updateCalendars(); + + this.updateInputText(); + + this.hideCalendars(); + this.hide(); + this.element.trigger('apply.daterangepicker', this); + } + }, + + clickPrev: function (e) { + var cal = $(e.target).parents('.calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.subtract('month', 1); + } else { + this.rightCalendar.month.subtract('month', 1); + } + this.updateCalendars(); + }, + + clickNext: function (e) { + var cal = $(e.target).parents('.calendar'); + if (cal.hasClass('left')) { + this.leftCalendar.month.add('month', 1); + } else { + this.rightCalendar.month.add('month', 1); + } + this.updateCalendars(); + }, + + enterDate: function (e) { + + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.calendar'); + + if (cal.hasClass('left')) { + this.container.find('input[name=daterangepicker_start]').val(this.leftCalendar.calendar[row][col].format(this.format)); + } else { + this.container.find('input[name=daterangepicker_end]').val(this.rightCalendar.calendar[row][col].format(this.format)); + } + + }, + + clickDate: function (e) { + var title = $(e.target).attr('data-title'); + var row = title.substr(1, 1); + var col = title.substr(3, 1); + var cal = $(e.target).parents('.calendar'); + + var startDate, endDate; + if (cal.hasClass('left')) { + startDate = this.leftCalendar.calendar[row][col]; + endDate = this.endDate; + if (typeof this.dateLimit === 'object') { + var maxDate = moment(startDate).add(this.dateLimit).startOf('day'); + if (endDate.isAfter(maxDate)) { + endDate = maxDate; + } + } + } else { + startDate = this.startDate; + endDate = this.rightCalendar.calendar[row][col]; + if (typeof this.dateLimit === 'object') { + var minDate = moment(endDate).subtract(this.dateLimit).startOf('day'); + if (startDate.isBefore(minDate)) { + startDate = minDate; + } + } + } + + if (this.singleDatePicker && cal.hasClass('left')) { + endDate = startDate.clone(); + } else if (this.singleDatePicker && cal.hasClass('right')) { + startDate = endDate.clone(); + } + + cal.find('td').removeClass('active'); + + if (startDate.isSame(endDate) || startDate.isBefore(endDate)) { + $(e.target).addClass('active'); + this.startDate = startDate; + this.endDate = endDate; + this.chosenLabel = this.locale.customRangeLabel; + } else if (startDate.isAfter(endDate)) { + $(e.target).addClass('active'); + var difference = this.endDate.diff(this.startDate); + this.startDate = startDate; + this.endDate = moment(startDate).add('ms', difference); + this.chosenLabel = this.locale.customRangeLabel; + } + + this.leftCalendar.month.month(this.startDate.month()).year(this.startDate.year()); + this.rightCalendar.month.month(this.endDate.month()).year(this.endDate.year()); + this.updateCalendars(); + + if (!this.timePicker) + endDate.endOf('day'); + + if (this.singleDatePicker) + this.clickApply(); + }, + + clickApply: function (e) { + this.updateInputText(); + this.hide(); + this.element.trigger('apply.daterangepicker', this); + }, + + clickCancel: function (e) { + this.startDate = this.oldStartDate; + this.endDate = this.oldEndDate; + this.chosenLabel = this.oldChosenLabel; + this.updateView(); + this.updateCalendars(); + this.hide(); + this.element.trigger('cancel.daterangepicker', this); + }, + + updateMonthYear: function (e) { + var isLeft = $(e.target).closest('.calendar').hasClass('left'), + leftOrRight = isLeft ? 'left' : 'right', + cal = this.container.find('.calendar.'+leftOrRight); + + // Month must be Number for new moment versions + var month = parseInt(cal.find('.monthselect').val(), 10); + var year = cal.find('.yearselect').val(); + + this[leftOrRight+'Calendar'].month.month(month).year(year); + this.updateCalendars(); + }, + + updateTime: function(e) { + + var cal = $(e.target).closest('.calendar'), + isLeft = cal.hasClass('left'); + + var hour = parseInt(cal.find('.hourselect').val(), 10); + var minute = parseInt(cal.find('.minuteselect').val(), 10); + + if (this.timePicker12Hour) { + var ampm = cal.find('.ampmselect').val(); + if (ampm === 'PM' && hour < 12) + hour += 12; + if (ampm === 'AM' && hour === 12) + hour = 0; + } + + if (isLeft) { + var start = this.startDate.clone(); + start.hour(hour); + start.minute(minute); + this.startDate = start; + this.leftCalendar.month.hour(hour).minute(minute); + } else { + var end = this.endDate.clone(); + end.hour(hour); + end.minute(minute); + this.endDate = end; + this.rightCalendar.month.hour(hour).minute(minute); + } + + this.updateCalendars(); + }, + + updateCalendars: function () { + this.leftCalendar.calendar = this.buildCalendar(this.leftCalendar.month.month(), this.leftCalendar.month.year(), this.leftCalendar.month.hour(), this.leftCalendar.month.minute(), 'left'); + this.rightCalendar.calendar = this.buildCalendar(this.rightCalendar.month.month(), this.rightCalendar.month.year(), this.rightCalendar.month.hour(), this.rightCalendar.month.minute(), 'right'); + this.container.find('.calendar.left').empty().html(this.renderCalendar(this.leftCalendar.calendar, this.startDate, this.minDate, this.maxDate)); + this.container.find('.calendar.right').empty().html(this.renderCalendar(this.rightCalendar.calendar, this.endDate, this.startDate, this.maxDate)); + + this.container.find('.ranges li').removeClass('active'); + var customRange = true; + var i = 0; + for (var range in this.ranges) { + if (this.timePicker) { + if (this.startDate.isSame(this.ranges[range][0]) && this.endDate.isSame(this.ranges[range][1])) { + customRange = false; + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')') + .addClass('active').html(); + } + } else { + //ignore times when comparing dates if time picker is not enabled + if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) { + customRange = false; + this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')') + .addClass('active').html(); + } + } + i++; + } + if (customRange) { + this.chosenLabel = this.container.find('.ranges li:last') + .addClass('active').html(); + } + }, + + buildCalendar: function (month, year, hour, minute, side) { + var firstDay = moment([year, month, 1]); + var lastMonth = moment(firstDay).subtract('month', 1).month(); + var lastYear = moment(firstDay).subtract('month', 1).year(); + + var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth(); + + var dayOfWeek = firstDay.day(); + + var i; + + //initialize a 6 rows x 7 columns array for the calendar + var calendar = []; + for (i = 0; i < 6; i++) { + calendar[i] = []; + } + + //populate the calendar with date objects + var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1; + if (startDay > daysInLastMonth) + startDay -= 7; + + if (dayOfWeek == this.locale.firstDay) + startDay = daysInLastMonth - 6; + + var curDate = moment([lastYear, lastMonth, startDay, 12, minute]); + var col, row; + for (i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add('hour', 24)) { + if (i > 0 && col % 7 === 0) { + col = 0; + row++; + } + calendar[row][col] = curDate.clone().hour(hour); + curDate.hour(12); + } + + return calendar; + }, + + renderDropdowns: function (selected, minDate, maxDate) { + var currentMonth = selected.month(); + var monthHtml = '"; + + var currentYear = selected.year(); + var maxYear = (maxDate && maxDate.year()) || (currentYear + 5); + var minYear = (minDate && minDate.year()) || (currentYear - 50); + var yearHtml = ''; + + return monthHtml + yearHtml; + }, + + renderCalendar: function (calendar, selected, minDate, maxDate) { + + var html = '
      '; + html += ''; + html += ''; + html += ''; + + // add empty cell for week number + if (this.showWeekNumbers) + html += ''; + + if (!minDate || minDate.isBefore(calendar[1][1])) { + html += ''; + } else { + html += ''; + } + + var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY"); + + if (this.showDropdowns) { + dateHtml = this.renderDropdowns(calendar[1][1], minDate, maxDate); + } + + html += ''; + if (!maxDate || maxDate.isAfter(calendar[1][1])) { + html += ''; + } else { + html += ''; + } + + html += ''; + html += ''; + + // add week number label + if (this.showWeekNumbers) + html += ''; + + $.each(this.locale.daysOfWeek, function (index, dayOfWeek) { + html += ''; + }); + + html += ''; + html += ''; + html += ''; + + for (var row = 0; row < 6; row++) { + html += ''; + + // add week number + if (this.showWeekNumbers) + html += ''; + + for (var col = 0; col < 7; col++) { + var cname = 'available '; + cname += (calendar[row][col].month() == calendar[1][1].month()) ? '' : 'off'; + + if ((minDate && calendar[row][col].isBefore(minDate, 'day')) || (maxDate && calendar[row][col].isAfter(maxDate, 'day'))) { + cname = ' off disabled '; + } else if (calendar[row][col].format('YYYY-MM-DD') == selected.format('YYYY-MM-DD')) { + cname += ' active '; + if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) { + cname += ' start-date '; + } + if (calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) { + cname += ' end-date '; + } + } else if (calendar[row][col] >= this.startDate && calendar[row][col] <= this.endDate) { + cname += ' in-range '; + if (calendar[row][col].isSame(this.startDate)) { cname += ' start-date '; } + if (calendar[row][col].isSame(this.endDate)) { cname += ' end-date '; } + } + + var title = 'r' + row + 'c' + col; + html += ''; + } + html += ''; + } + + html += ''; + html += '
      ' + dateHtml + '
      ' + this.locale.weekLabel + '' + dayOfWeek + '
      ' + calendar[row][0].week() + '' + calendar[row][col].date() + '
      '; + html += '
      '; + + var i; + if (this.timePicker) { + + html += '
      '; + html += ' : '; + + html += ' '; + + if (this.timePicker12Hour) { + html += ''; + } + + html += '
      '; + + } + + return html; + + }, + + remove: function() { + + this.container.remove(); + this.element.off('.daterangepicker'); + this.element.removeData('daterangepicker'); + + } + + }; + + $.fn.daterangepicker = function (options, cb) { + this.each(function () { + var el = $(this); + if (el.data('daterangepicker')) + el.data('daterangepicker').remove(); + el.data('daterangepicker', new DateRangePicker(el, options, cb)); + }); + return this; + }; + +}(window.jQuery, window.moment); \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css new file mode 100644 index 000000000..a4069929b --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css @@ -0,0 +1,347 @@ +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); +} +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn:active, +.btn.active { + background-image: none; +} +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #dbdbdb; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus { + background-color: #e0e0e0; + background-position: 0 -15px; +} +.btn-default:active, +.btn-default.active { + background-color: #e0e0e0; + border-color: #dbdbdb; +} +.btn-primary { + background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #2b669a; +} +.btn-primary:hover, +.btn-primary:focus { + background-color: #2d6ca2; + background-position: 0 -15px; +} +.btn-primary:active, +.btn-primary.active { + background-color: #2d6ca2; + border-color: #2b669a; +} +.btn-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #3e8f3e; +} +.btn-success:hover, +.btn-success:focus { + background-color: #419641; + background-position: 0 -15px; +} +.btn-success:active, +.btn-success.active { + background-color: #419641; + border-color: #3e8f3e; +} +.btn-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #28a4c9; +} +.btn-info:hover, +.btn-info:focus { + background-color: #2aabd2; + background-position: 0 -15px; +} +.btn-info:active, +.btn-info.active { + background-color: #2aabd2; + border-color: #28a4c9; +} +.btn-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #e38d13; +} +.btn-warning:hover, +.btn-warning:focus { + background-color: #eb9316; + background-position: 0 -15px; +} +.btn-warning:active, +.btn-warning.active { + background-color: #eb9316; + border-color: #e38d13; +} +.btn-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #b92c28; +} +.btn-danger:hover, +.btn-danger:focus { + background-color: #c12e2a; + background-position: 0 -15px; +} +.btn-danger:active, +.btn-danger.active { + background-color: #c12e2a; + border-color: #b92c28; +} +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #e8e8e8; + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #357ebd; + background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); + background-repeat: repeat-x; +} +.navbar-default { + background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); +} +.navbar-default .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); +} +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, .25); +} +.navbar-inverse { + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; +} +.navbar-inverse .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%); + background-image: linear-gradient(to bottom, #222 0%, #282828 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); +} +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); +} +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); +} +.alert-success { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); + background-repeat: repeat-x; + border-color: #b2dba1; +} +.alert-info { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); + background-repeat: repeat-x; + border-color: #9acfea; +} +.alert-warning { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); + background-repeat: repeat-x; + border-color: #f5e79e; +} +.alert-danger { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); + background-repeat: repeat-x; + border-color: #dca7a7; +} +.progress { + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar { + background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); + background-repeat: repeat-x; +} +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #3071a9; + background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0); + background-repeat: repeat-x; + border-color: #3278b3; +} +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: 0 1px 2px rgba(0, 0, 0, .05); +} +.panel-default > .panel-heading { + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.panel-primary > .panel-heading { + background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); + background-repeat: repeat-x; +} +.panel-success > .panel-heading { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); + background-repeat: repeat-x; +} +.panel-info > .panel-heading { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); + background-repeat: repeat-x; +} +.panel-warning > .panel-heading { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); + background-repeat: repeat-x; +} +.panel-danger > .panel-heading { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); + background-repeat: repeat-x; +} +.well { + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; + border-color: #dcdcdc; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); +} +/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css.map b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css.map new file mode 100644 index 000000000..b36fc9a49 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/theme.less","less/mixins.less"],"names":[],"mappings":"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","sourcesContent":["\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-bg, 5%); @end-color: darken(@navbar-default-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-bg; @end-color: lighten(@navbar-inverse-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n}\n\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","//\n// Mixins\n// --------------------------------------------------\n\n\n// Utilities\n// -------------------------\n\n// Clearfix\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n\n// WebKit-style focus\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n\n// Center-align a block level element\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n// Sizing shortcuts\n.size(@width; @height) {\n width: @width;\n height: @height;\n}\n.square(@size) {\n .size(@size; @size);\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &::-moz-placeholder { color: @color; // Firefox\n opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Text overflow\n// Requires inline-block or block for proper styling\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note\n// that we cannot chain the mixins together in Less, so they are repeated.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n\n\n\n// CSS3 PROPERTIES\n// --------------------------------------------------\n\n// Single side border-radius\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support the\n// standard `box-shadow` property.\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Transitions\n.transition(@transition) {\n -webkit-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n// Transformations\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n transform: rotate(@degrees);\n}\n.scale(@ratio; @ratio-y...) {\n -webkit-transform: scale(@ratio, @ratio-y);\n -ms-transform: scale(@ratio, @ratio-y); // IE9 only\n transform: scale(@ratio, @ratio-y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n transform: translate(@x, @y);\n}\n.skew(@x; @y) {\n -webkit-transform: skew(@x, @y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n transform: skew(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// User select\n// For selecting text on the page\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n\n// Resize anything\n.resizable(@direction) {\n resize: @direction; // Options: horizontal, vertical, both\n overflow: auto; // Safari fix\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Opacity\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n\n\n\n// GRADIENTS\n// --------------------------------------------------\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n\n// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n\n\n\n// Retina images\n//\n// Short retina mixin for setting background-image and -size\n\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// COMPONENT MIXINS\n// --------------------------------------------------\n\n// Horizontal dividers\n// -------------------------\n// Dividers (basically an hr) within dropdowns and nav lists\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n\n// Panels\n// -------------------------\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse .panel-body {\n border-top-color: @border;\n }\n }\n & > .panel-footer {\n + .panel-collapse .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n\n// Alerts\n// -------------------------\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n\n// Tables\n// -------------------------\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n\n// List Groups\n// -------------------------\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading { color: inherit; }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n\n// Button variants\n// -------------------------\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 8%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n// -------------------------\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n\n// Pagination\n// -------------------------\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n\n// Labels\n// -------------------------\n.label-variant(@color) {\n background-color: @color;\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n\n// Contextual backgrounds\n// -------------------------\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\n background-color: darken(@color, 10%);\n }\n}\n\n// Typography\n// -------------------------\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover {\n color: darken(@color, 10%);\n }\n}\n\n// Navbar vertical align\n// -------------------------\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n\n// Progress bars\n// -------------------------\n.progress-bar-variant(@color) {\n background-color: @color;\n .progress-striped & {\n #gradient > .striped();\n }\n}\n\n// Responsive utilities\n// -------------------------\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n\n\n// Grid System\n// -----------\n\n// Centered container element\n.container-fixed() {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n @media (min-width: @screen-xs-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-push(@columns) {\n @media (min-width: @screen-xs-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-pull(@columns) {\n @media (min-width: @screen-xs-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n\n// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-focus-border` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. ``\n// element gets special love because it's special, and that's a fact!\n\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-darker: lighten(#000, 13.5%); // #222\n@gray-dark: lighten(#000, 20%); // #333\n@gray: lighten(#000, 33.5%); // #555\n@gray-light: lighten(#000, 60%); // #999\n@gray-lighter: lighten(#000, 93.5%); // #eee\n\n@brand-primary: #428bca;\n@brand-success: #5cb85c;\n@brand-info: #5bc0de;\n@brand-warning: #f0ad4e;\n@brand-danger: #d9534f;\n\n\n//== Scaffolding\n//\n// ## Settings for some of the most global styles.\n\n//** Background color for ``.\n@body-bg: #fff;\n//** Global text color on ``.\n@text-color: @gray-dark;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 15%);\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for ``, ``, and `
      `.\n@font-family-monospace:   Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base:        @font-family-sans-serif;\n\n@font-size-base:          14px;\n@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5:            @font-size-base;\n@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base:        1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the ``.\n@headings-font-family:    inherit;\n@headings-font-weight:    500;\n@headings-line-height:    1.1;\n@headings-color:          inherit;\n\n\n//-- Iconography\n//\n//## Specify custom locations of the include Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n@icon-font-path:          \"../fonts/\";\n@icon-font-name:          \"glyphicons-halflings-regular\";\n@icon-font-svg-id:        \"glyphicons_halflingsregular\";\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical:     6px;\n@padding-base-horizontal:   12px;\n\n@padding-large-vertical:    10px;\n@padding-large-horizontal:  16px;\n\n@padding-small-vertical:    5px;\n@padding-small-horizontal:  10px;\n\n@padding-xs-vertical:       1px;\n@padding-xs-horizontal:     5px;\n\n@line-height-large:         1.33;\n@line-height-small:         1.5;\n\n@border-radius-base:        4px;\n@border-radius-large:       6px;\n@border-radius-small:       3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color:    #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg:       @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base:          4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large:         5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for ``s and ``s.\n@table-cell-padding:            8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding:  5px;\n\n//** Default background color used for all tables.\n@table-bg:                      transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent:               #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover:                #f5f5f5;\n@table-bg-active:               @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color:            #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap's buttons, define text, background and border color.\n\n@btn-font-weight:                normal;\n\n@btn-default-color:              #333;\n@btn-default-bg:                 #fff;\n@btn-default-border:             #ccc;\n\n@btn-primary-color:              #fff;\n@btn-primary-bg:                 @brand-primary;\n@btn-primary-border:             darken(@btn-primary-bg, 5%);\n\n@btn-success-color:              #fff;\n@btn-success-bg:                 @brand-success;\n@btn-success-border:             darken(@btn-success-bg, 5%);\n\n@btn-info-color:                 #fff;\n@btn-info-bg:                    @brand-info;\n@btn-info-border:                darken(@btn-info-bg, 5%);\n\n@btn-warning-color:              #fff;\n@btn-warning-bg:                 @brand-warning;\n@btn-warning-border:             darken(@btn-warning-bg, 5%);\n\n@btn-danger-color:               #fff;\n@btn-danger-bg:                  @brand-danger;\n@btn-danger-border:              darken(@btn-danger-bg, 5%);\n\n@btn-link-disabled-color:        @gray-light;\n\n\n//== Forms\n//\n//##\n\n//** `` background color\n@input-bg:                       #fff;\n//** `` background color\n@input-bg-disabled:              @gray-lighter;\n\n//** Text color for ``s\n@input-color:                    @gray;\n//** `` border color\n@input-border:                   #ccc;\n//** `` border radius\n@input-border-radius:            @border-radius-base;\n//** Border color for inputs on focus\n@input-border-focus:             #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder:        @gray-light;\n\n//** Default `.form-control` height\n@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n@legend-color:                   @gray-dark;\n@legend-border-color:            #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg:           @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg:                    #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border:                rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border:       #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg:            #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color:            @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color:      darken(@gray-dark, 5%);\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg:         #f5f5f5;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color:     @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg:        @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color:   @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color:          @gray-light;\n\n// Note: Deprecated @dropdown-caret-color as of v3.1.0\n@dropdown-caret-color:           #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar:            1000;\n@zindex-dropdown:          1000;\n@zindex-popover:           1010;\n@zindex-tooltip:           1030;\n@zindex-navbar-fixed:      1030;\n@zindex-modal-background:  1040;\n@zindex-modal:             1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n// Note: Deprecated @screen-xs and @screen-phone as of v3.0.1\n@screen-xs:                  480px;\n@screen-xs-min:              @screen-xs;\n@screen-phone:               @screen-xs-min;\n\n// Small screen / tablet\n// Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1\n@screen-sm:                  768px;\n@screen-sm-min:              @screen-sm;\n@screen-tablet:              @screen-sm-min;\n\n// Medium screen / desktop\n// Note: Deprecated @screen-md and @screen-desktop as of v3.0.1\n@screen-md:                  992px;\n@screen-md-min:              @screen-md;\n@screen-desktop:             @screen-md-min;\n\n// Large screen / wide desktop\n// Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1\n@screen-lg:                  1200px;\n@screen-lg-min:              @screen-lg;\n@screen-lg-desktop:          @screen-lg-min;\n\n// So media queries don't overlap when required, provide a maximum\n@screen-xs-max:              (@screen-sm-min - 1);\n@screen-sm-max:              (@screen-md-min - 1);\n@screen-md-max:              (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns:              12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width:         30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint:     @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet:             ((720px + @grid-gutter-width));\n//** For `@screen-sm-min` and up.\n@container-sm:                 @container-tablet;\n\n// Medium screen / desktop\n@container-desktop:            ((940px + @grid-gutter-width));\n//** For `@screen-md-min` and up.\n@container-md:                 @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop:      ((1140px + @grid-gutter-width));\n//** For `@screen-lg-min` and up.\n@container-lg:                 @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height:                    50px;\n@navbar-margin-bottom:             @line-height-computed;\n@navbar-border-radius:             @border-radius-base;\n@navbar-padding-horizontal:        floor((@grid-gutter-width / 2));\n@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height:       340px;\n\n@navbar-default-color:             #777;\n@navbar-default-bg:                #f8f8f8;\n@navbar-default-border:            darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color:                #777;\n@navbar-default-link-hover-color:          #333;\n@navbar-default-link-hover-bg:             transparent;\n@navbar-default-link-active-color:         #555;\n@navbar-default-link-active-bg:            darken(@navbar-default-bg, 6.5%);\n@navbar-default-link-disabled-color:       #ccc;\n@navbar-default-link-disabled-bg:          transparent;\n\n// Navbar brand label\n@navbar-default-brand-color:               @navbar-default-link-color;\n@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);\n@navbar-default-brand-hover-bg:            transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg:           #ddd;\n@navbar-default-toggle-icon-bar-bg:        #888;\n@navbar-default-toggle-border-color:       #ddd;\n\n\n// Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color:                      @gray-light;\n@navbar-inverse-bg:                         #222;\n@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color:                 @gray-light;\n@navbar-inverse-link-hover-color:           #fff;\n@navbar-inverse-link-hover-bg:              transparent;\n@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-disabled-color:        #444;\n@navbar-inverse-link-disabled-bg:           transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color:                @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color:          #fff;\n@navbar-inverse-brand-hover-bg:             transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg:            #333;\n@navbar-inverse-toggle-icon-bar-bg:         #fff;\n@navbar-inverse-toggle-border-color:        #333;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding:                          10px 15px;\n@nav-link-hover-bg:                         @gray-lighter;\n\n@nav-disabled-link-color:                   @gray-light;\n@nav-disabled-link-hover-color:             @gray-light;\n\n@nav-open-link-hover-color:                 #fff;\n\n//== Tabs\n@nav-tabs-border-color:                     #ddd;\n\n@nav-tabs-link-hover-border-color:          @gray-lighter;\n\n@nav-tabs-active-link-hover-bg:             @body-bg;\n@nav-tabs-active-link-hover-color:          @gray;\n@nav-tabs-active-link-hover-border-color:   #ddd;\n\n@nav-tabs-justified-link-border-color:            #ddd;\n@nav-tabs-justified-active-link-border-color:     @body-bg;\n\n//== Pills\n@nav-pills-border-radius:                   @border-radius-base;\n@nav-pills-active-link-hover-bg:            @component-active-bg;\n@nav-pills-active-link-hover-color:         @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color:                     @link-color;\n@pagination-bg:                        #fff;\n@pagination-border:                    #ddd;\n\n@pagination-hover-color:               @link-hover-color;\n@pagination-hover-bg:                  @gray-lighter;\n@pagination-hover-border:              #ddd;\n\n@pagination-active-color:              #fff;\n@pagination-active-bg:                 @brand-primary;\n@pagination-active-border:             @brand-primary;\n\n@pagination-disabled-color:            @gray-light;\n@pagination-disabled-bg:               #fff;\n@pagination-disabled-border:           #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg:                             @pagination-bg;\n@pager-border:                         @pagination-border;\n@pager-border-radius:                  15px;\n\n@pager-hover-bg:                       @pagination-hover-bg;\n\n@pager-active-bg:                      @pagination-active-bg;\n@pager-active-color:                   @pagination-active-color;\n\n@pager-disabled-color:                 @pagination-disabled-color;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding:              30px;\n@jumbotron-color:                inherit;\n@jumbotron-bg:                   @gray-lighter;\n@jumbotron-heading-color:        inherit;\n@jumbotron-font-size:            ceil((@font-size-base * 1.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text:             #3c763d;\n@state-success-bg:               #dff0d8;\n@state-success-border:           darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text:                #31708f;\n@state-info-bg:                  #d9edf7;\n@state-info-border:              darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text:             #8a6d3b;\n@state-warning-bg:               #fcf8e3;\n@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);\n\n@state-danger-text:              #a94442;\n@state-danger-bg:                #f2dede;\n@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width:           200px;\n//** Tooltip text color\n@tooltip-color:               #fff;\n//** Tooltip background color\n@tooltip-bg:                  #000;\n@tooltip-opacity:             .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width:         5px;\n//** Tooltip arrow color\n@tooltip-arrow-color:         @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg:                          #fff;\n//** Popover maximum width\n@popover-max-width:                   276px;\n//** Popover border color\n@popover-border-color:                rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color:       #ccc;\n\n//** Popover title background color\n@popover-title-bg:                    darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width:                 10px;\n//** Popover arrow color\n@popover-arrow-color:                 #fff;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width:           (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg:            @gray-light;\n//** Primary label background color\n@label-primary-bg:            @brand-primary;\n//** Success label background color\n@label-success-bg:            @brand-success;\n//** Info label background color\n@label-info-bg:               @brand-info;\n//** Warning label background color\n@label-warning-bg:            @brand-warning;\n//** Danger label background color\n@label-danger-bg:             @brand-danger;\n\n//** Default label text color\n@label-color:                 #fff;\n//** Default text color of a linked label\n@label-link-hover-color:      #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding:         20px;\n\n//** Padding applied to the modal title\n@modal-title-padding:         15px;\n//** Modal title line-height\n@modal-title-line-height:     @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg:                             #fff;\n//** Modal content border color\n@modal-content-border-color:                   rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color:          #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg:           #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity:      .5;\n//** Modal header border color\n@modal-header-border-color:   #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color:   @modal-header-border-color;\n\n@modal-lg:                    900px;\n@modal-md:                    600px;\n@modal-sm:                    300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding:               15px;\n@alert-border-radius:         @border-radius-base;\n@alert-link-font-weight:      bold;\n\n@alert-success-bg:            @state-success-bg;\n@alert-success-text:          @state-success-text;\n@alert-success-border:        @state-success-border;\n\n@alert-info-bg:               @state-info-bg;\n@alert-info-text:             @state-info-text;\n@alert-info-border:           @state-info-border;\n\n@alert-warning-bg:            @state-warning-bg;\n@alert-warning-text:          @state-warning-text;\n@alert-warning-border:        @state-warning-border;\n\n@alert-danger-bg:             @state-danger-bg;\n@alert-danger-text:           @state-danger-text;\n@alert-danger-border:         @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg:                 #f5f5f5;\n//** Progress bar text color\n@progress-bar-color:          #fff;\n\n//** Default progress bar color\n@progress-bar-bg:             @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg:     @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg:     @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg:      @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg:        @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg:                 #fff;\n//** `.list-group-item` border color\n@list-group-border:             #ddd;\n//** List group border radius\n@list-group-border-radius:      @border-radius-base;\n\n//** Background color of single list elements on hover\n@list-group-hover-bg:           #f5f5f5;\n//** Text color of active list elements\n@list-group-active-color:       @component-active-color;\n//** Background color of active list elements\n@list-group-active-bg:          @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border:      @list-group-active-bg;\n@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);\n\n@list-group-link-color:         #555;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg:                    #fff;\n@panel-body-padding:          15px;\n@panel-border-radius:         @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border:          #ddd;\n@panel-footer-bg:             #f5f5f5;\n\n@panel-default-text:          @gray-dark;\n@panel-default-border:        #ddd;\n@panel-default-heading-bg:    #f5f5f5;\n\n@panel-primary-text:          #fff;\n@panel-primary-border:        @brand-primary;\n@panel-primary-heading-bg:    @brand-primary;\n\n@panel-success-text:          @state-success-text;\n@panel-success-border:        @state-success-border;\n@panel-success-heading-bg:    @state-success-bg;\n\n@panel-info-text:             @state-info-text;\n@panel-info-border:           @state-info-border;\n@panel-info-heading-bg:       @state-info-bg;\n\n@panel-warning-text:          @state-warning-text;\n@panel-warning-border:        @state-warning-border;\n@panel-warning-heading-bg:    @state-warning-bg;\n\n@panel-danger-text:           @state-danger-text;\n@panel-danger-border:         @state-danger-border;\n@panel-danger-heading-bg:     @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding:           4px;\n//** Thumbnail background color\n@thumbnail-bg:                @body-bg;\n//** Thumbnail border color\n@thumbnail-border:            #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius:     @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color:     @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding:   9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg:                     #f5f5f5;\n@well-border:                 darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color:                 #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color:      #fff;\n@badge-bg:                    @gray-light;\n\n//** Badge text color in active nav link\n@badge-active-color:          @link-color;\n//** Badge background color in active nav link\n@badge-active-bg:             #fff;\n\n@badge-font-weight:           bold;\n@badge-line-height:           1;\n@badge-border-radius:         10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical:   8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg:                 #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color:              #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color:       @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator:          \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color:                      #fff;\n@carousel-control-width:                      15%;\n@carousel-control-opacity:                    .5;\n@carousel-control-font-size:                  20px;\n\n@carousel-indicator-active-bg:                #fff;\n@carousel-indicator-border-color:             #fff;\n\n@carousel-caption-color:                      #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight:           bold;\n@close-color:                 #000;\n@close-text-shadow:           0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color:                  #c7254e;\n@code-bg:                     #f9f2f4;\n\n@kbd-color:                   #fff;\n@kbd-bg:                      #333;\n\n@pre-bg:                      #f5f5f5;\n@pre-color:                   @gray-dark;\n@pre-border-color:            #ccc;\n@pre-scrollable-max-height:   340px;\n\n\n//== Type\n//\n//##\n\n//** Text muted color\n@text-muted:                  @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color:           @gray-light;\n//** Headings small color\n@headings-small-color:        @gray-light;\n//** Blockquote small color\n@blockquote-small-color:      @gray-light;\n//** Blockquote font size\n@blockquote-font-size:        (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color:     @gray-lighter;\n//** Page header border color\n@page-header-border-color:    @gray-lighter;\n\n\n//== Miscellaneous\n//\n//##\n\n//** Horizontal line color.\n@hr-border:                   @gray-lighter;\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n  display: block;\n  padding: @thumbnail-padding;\n  margin-bottom: @line-height-computed;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(all .2s ease-in-out);\n\n  > img,\n  a > img {\n    &:extend(.img-responsive);\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  // Add a hover state for linked versions only\n  a&:hover,\n  a&:focus,\n  a&.active {\n    border-color: @link-color;\n  }\n\n  // Image captions\n  .caption {\n    padding: @thumbnail-caption-padding;\n    color: @thumbnail-caption-color;\n  }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n\n  > .item {\n    display: none;\n    position: relative;\n    .transition(.6s ease-in-out left);\n\n    // Account for jankitude on images\n    > img,\n    > a > img {\n      &:extend(.img-responsive);\n      line-height: 1;\n    }\n  }\n\n  > .active,\n  > .next,\n  > .prev { display: block; }\n\n  > .active {\n    left: 0;\n  }\n\n  > .next,\n  > .prev {\n    position: absolute;\n    top: 0;\n    width: 100%;\n  }\n\n  > .next {\n    left: 100%;\n  }\n  > .prev {\n    left: -100%;\n  }\n  > .next.left,\n  > .prev.right {\n    left: 0;\n  }\n\n  > .active.left {\n    left: -100%;\n  }\n  > .active.right {\n    left: 100%;\n  }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: @carousel-control-width;\n  .opacity(@carousel-control-opacity);\n  font-size: @carousel-control-font-size;\n  color: @carousel-control-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  // We can't have this transition here because WebKit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Set gradients for backgrounds\n  &.left {\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n  }\n  &.right {\n    left: auto;\n    right: 0;\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n  }\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    outline: none;\n    color: @carousel-control-color;\n    text-decoration: none;\n    .opacity(.9);\n  }\n\n  // Toggles\n  .icon-prev,\n  .icon-next,\n  .glyphicon-chevron-left,\n  .glyphicon-chevron-right {\n    position: absolute;\n    top: 50%;\n    z-index: 5;\n    display: inline-block;\n  }\n  .icon-prev,\n  .glyphicon-chevron-left {\n    left: 50%;\n  }\n  .icon-next,\n  .glyphicon-chevron-right {\n    right: 50%;\n  }\n  .icon-prev,\n  .icon-next {\n    width:  20px;\n    height: 20px;\n    margin-top: -10px;\n    margin-left: -10px;\n    font-family: serif;\n  }\n\n  .icon-prev {\n    &:before {\n      content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n    }\n  }\n  .icon-next {\n    &:before {\n      content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n    }\n  }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n\n  li {\n    display: inline-block;\n    width:  10px;\n    height: 10px;\n    margin: 1px;\n    text-indent: -999px;\n    border: 1px solid @carousel-indicator-border-color;\n    border-radius: 10px;\n    cursor: pointer;\n\n    // IE8-9 hack for event handling\n    //\n    // Internet Explorer 8-9 does not support clicks on elements without a set\n    // `background-color`. We cannot use `filter` since that's not viewed as a\n    // background color by the browser. Thus, a hack is needed.\n    //\n    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n    // set alpha transparency for the best results possible.\n    background-color: #000 \\9; // IE8\n    background-color: rgba(0,0,0,0); // IE9\n  }\n  .active {\n    margin: 0;\n    width:  12px;\n    height: 12px;\n    background-color: @carousel-indicator-active-bg;\n  }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: @carousel-caption-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  & .btn {\n    text-shadow: none; // No shadow for button elements in carousel-caption\n  }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n  // Scale up the controls a smidge\n  .carousel-control {\n    .glyphicon-chevron-left,\n    .glyphicon-chevron-right,\n    .icon-prev,\n    .icon-next {\n      width: 30px;\n      height: 30px;\n      margin-top: -15px;\n      margin-left: -15px;\n      font-size: 30px;\n    }\n  }\n\n  // Show and left align the captions\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n\n  // Move up the indicators\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  font-family: @headings-font-family;\n  font-weight: @headings-font-weight;\n  line-height: @headings-line-height;\n  color: @headings-color;\n\n  small,\n  .small {\n    font-weight: normal;\n    line-height: 1;\n    color: @headings-small-color;\n  }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n  margin-top: @line-height-computed;\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 65%;\n  }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n  margin-top: (@line-height-computed / 2);\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 75%;\n  }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n  margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n  margin-bottom: @line-height-computed;\n  font-size: floor((@font-size-base * 1.15));\n  font-weight: 200;\n  line-height: 1.4;\n\n  @media (min-width: @screen-sm-min) {\n    font-size: (@font-size-base * 1.5);\n  }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: 14px base font * 85% = about 12px\nsmall,\n.small  { font-size: 85%; }\n\n// Undo browser default styling\ncite    { font-style: normal; }\n\n// Alignment\n.text-left           { text-align: left; }\n.text-right          { text-align: right; }\n.text-center         { text-align: center; }\n.text-justify        { text-align: justify; }\n\n// Contextual colors\n.text-muted {\n  color: @text-muted;\n}\n.text-primary {\n  .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n  .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n  .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n  .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n  .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n  // Given the contrast here, this is the only class to have its color inverted\n  // automatically.\n  color: #fff;\n  .bg-variant(@brand-primary);\n}\n.bg-success {\n  .bg-variant(@state-success-bg);\n}\n.bg-info {\n  .bg-variant(@state-info-bg);\n}\n.bg-warning {\n  .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n  .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n  padding-bottom: ((@line-height-computed / 2) - 1);\n  margin: (@line-height-computed * 2) 0 @line-height-computed;\n  border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// --------------------------------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n  margin-top: 0;\n  margin-bottom: (@line-height-computed / 2);\n  ul,\n  ol {\n    margin-bottom: 0;\n  }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  .list-unstyled();\n  margin-left: -5px;\n\n  > li {\n    display: inline-block;\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n}\n\n// Description Lists\ndl {\n  margin-top: 0; // Remove browser default\n  margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n  line-height: @line-height-base;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n@media (min-width: @grid-float-breakpoint) {\n  .dl-horizontal {\n    dt {\n      float: left;\n      width: (@component-offset-horizontal - 20);\n      clear: left;\n      text-align: right;\n      .text-overflow();\n    }\n    dd {\n      margin-left: @component-offset-horizontal;\n      &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n    }\n  }\n}\n\n// MISC\n// ----\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\n// Blockquotes\nblockquote {\n  padding: (@line-height-computed / 2) @line-height-computed;\n  margin: 0 0 @line-height-computed;\n  font-size: @blockquote-font-size;\n  border-left: 5px solid @blockquote-border-color;\n\n  p,\n  ul,\n  ol {\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  // Note: Deprecated small and .small as of v3.1.0\n  // Context: https://github.com/twbs/bootstrap/issues/11660\n  footer,\n  small,\n  .small {\n    display: block;\n    font-size: 80%; // back to default font-size\n    line-height: @line-height-base;\n    color: @blockquote-small-color;\n\n    &:before {\n      content: '\\2014 \\00A0'; // em dash, nbsp\n    }\n  }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid @blockquote-border-color;\n  border-left: 0;\n  text-align: right;\n\n  // Account for citation\n  footer,\n  small,\n  .small {\n    &:before { content: ''; }\n    &:after {\n      content: '\\00A0 \\2014'; // nbsp, em dash\n    }\n  }\n}\n\n// Quotes\nblockquote:before,\nblockquote:after {\n  content: \"\";\n}\n\n// Addresses\naddress {\n  margin-bottom: @line-height-computed;\n  font-style: normal;\n  line-height: @line-height-base;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n  font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @code-color;\n  background-color: @code-bg;\n  white-space: nowrap;\n  border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @kbd-color;\n  background-color: @kbd-bg;\n  border-radius: @border-radius-small;\n  box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n}\n\n// Blocks of code\npre {\n  display: block;\n  padding: ((@line-height-computed - 1) / 2);\n  margin: 0 0 (@line-height-computed / 2);\n  font-size: (@font-size-base - 1); // 14px to 13px\n  line-height: @line-height-base;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: @pre-color;\n  background-color: @pre-bg;\n  border: 1px solid @pre-border-color;\n  border-radius: @border-radius-base;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n    border-radius: 0;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: @pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n  .container-fixed();\n\n  @media (min-width: @screen-sm-min) {\n    width: @container-sm;\n  }\n  @media (min-width: @screen-md-min) {\n    width: @container-md;\n  }\n  @media (min-width: @screen-lg-min) {\n    width: @container-lg;\n  }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n  .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n  .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n  .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n  .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n  .make-grid(lg);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  max-width: 100%;\n  background-color: @table-bg;\n}\nth {\n  text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n  width: 100%;\n  margin-bottom: @line-height-computed;\n  // Cells\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-cell-padding;\n        line-height: @line-height-base;\n        vertical-align: top;\n        border-top: 1px solid @table-border-color;\n      }\n    }\n  }\n  // Bottom align for column headings\n  > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: 2px solid @table-border-color;\n  }\n  // Remove top border from thead by default\n  > caption + thead,\n  > colgroup + thead,\n  > thead:first-child {\n    > tr:first-child {\n      > th,\n      > td {\n        border-top: 0;\n      }\n    }\n  }\n  // Account for multiple tbody instances\n  > tbody + tbody {\n    border-top: 2px solid @table-border-color;\n  }\n\n  // Nesting\n  .table {\n    background-color: @body-bg;\n  }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-condensed-cell-padding;\n      }\n    }\n  }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n  border: 1px solid @table-border-color;\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        border: 1px solid @table-border-color;\n      }\n    }\n  }\n  > thead > tr {\n    > th,\n    > td {\n      border-bottom-width: 2px;\n    }\n  }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-child(odd) {\n    > td,\n    > th {\n      background-color: @table-bg-accent;\n    }\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    > td,\n    > th {\n      background-color: @table-bg-hover;\n    }\n  }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n  position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n  float: none;\n  display: table-column;\n}\ntable {\n  td,\n  th {\n    &[class*=\"col-\"] {\n      position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n      float: none;\n      display: table-cell;\n    }\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n@media (max-width: @screen-xs-max) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: (@line-height-computed * 0.75);\n    overflow-y: hidden;\n    overflow-x: scroll;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid @table-border-color;\n    -webkit-overflow-scrolling: touch;\n\n    // Tighten up spacing\n    > .table {\n      margin-bottom: 0;\n\n      // Ensure the content doesn't wrap\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th,\n          > td {\n            white-space: nowrap;\n          }\n        }\n      }\n    }\n\n    // Special overrides for the bordered tables\n    > .table-bordered {\n      border: 0;\n\n      // Nuke the appropriate borders so that the parent can handle them\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th:first-child,\n          > td:first-child {\n            border-left: 0;\n          }\n          > th:last-child,\n          > td:last-child {\n            border-right: 0;\n          }\n        }\n      }\n\n      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n      // chances are there will be only one `tr` in a `thead` and that would\n      // remove the border altogether.\n      > tbody,\n      > tfoot {\n        > tr:last-child {\n          > th,\n          > td {\n            border-bottom: 0;\n          }\n        }\n      }\n\n    }\n  }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  // Chrome and Firefox set a `min-width: -webkit-min-content;` on fieldsets,\n  // so we reset that to ensure it behaves more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359.\n  min-width: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: @line-height-computed;\n  font-size: (@font-size-base * 1.5);\n  line-height: inherit;\n  color: @legend-color;\n  border: 0;\n  border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n  display: inline-block;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n  .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9; /* IE8-9 */\n  line-height: normal;\n}\n\n// Set the height of file controls to match text inputs\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  .tab-focus();\n}\n\n// Adjust output element\noutput {\n  display: block;\n  padding-top: (@padding-base-vertical + 1);\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n  background-color: @input-bg;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid @input-border;\n  border-radius: @input-border-radius;\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n  .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  .form-control-focus();\n\n  // Placeholder\n  .placeholder();\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &[disabled],\n  &[readonly],\n  fieldset[disabled] & {\n    cursor: not-allowed;\n    background-color: @input-bg-disabled;\n    opacity: 1; // iOS fix for unreadable disabled content\n  }\n\n  // Reset height for `textarea`s\n  textarea& {\n    height: auto;\n  }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n\n\n// Special styles for iOS date input\n//\n// In Mobile Safari, date inputs require a pixel line-height that matches the\n// given height of the input.\n\ninput[type=\"date\"] {\n  line-height: @input-height-base;\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n  margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n  display: block;\n  min-height: @line-height-computed; // clear the floating input if there is no label text\n  margin-top: 10px;\n  margin-bottom: 10px;\n  padding-left: 20px;\n  label {\n    display: inline;\n    font-weight: normal;\n    cursor: pointer;\n  }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  float: left;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"],\n.radio,\n.radio-inline,\n.checkbox,\n.checkbox-inline {\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: not-allowed;\n  }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n\n.input-sm {\n  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n.input-lg {\n  .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n  // Enable absolute positioning\n  position: relative;\n\n  // Ensure icons don't overlap text\n  .form-control {\n    padding-right: (@input-height-base * 1.25);\n  }\n\n  // Feedback icon (requires .glyphicon classes)\n  .form-control-feedback {\n    position: absolute;\n    top: (@line-height-computed + 5); // Height of the `label` and its margin\n    right: 0;\n    display: block;\n    width: @input-height-base;\n    height: @input-height-base;\n    line-height: @input-height-base;\n    text-align: center;\n  }\n}\n\n// Feedback states\n.has-success {\n  .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n  .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n  .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n  margin-bottom: 0; // Remove default margin from `p`\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n  display: block; // account for any element using help-block\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n  // Kick in the inline\n  @media (min-width: @screen-sm-min) {\n    // Inline-block all the things for \"inline\"\n    .form-group {\n      display: inline-block;\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // In navbar-form, allow folks to *not* use `.form-group`\n    .form-control {\n      display: inline-block;\n      width: auto; // Prevent labels from stacking above inputs in `.form-group`\n      vertical-align: middle;\n    }\n    // Input groups need that 100% width though\n    .input-group > .form-control {\n      width: 100%;\n    }\n\n    .control-label {\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // Remove default margin on radios/checkboxes that were used for stacking, and\n    // then undo the floating of radios and checkboxes to match (which also avoids\n    // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).\n    .radio,\n    .checkbox {\n      display: inline-block;\n      margin-top: 0;\n      margin-bottom: 0;\n      padding-left: 0;\n      vertical-align: middle;\n    }\n    .radio input[type=\"radio\"],\n    .checkbox input[type=\"checkbox\"] {\n      float: none;\n      margin-left: 0;\n    }\n\n    // Validation states\n    //\n    // Reposition the icon because it's now within a grid column and columns have\n    // `position: relative;` on them. Also accounts for the grid gutter padding.\n    .has-feedback .form-control-feedback {\n      top: 0;\n    }\n  }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n  // Consistent vertical alignment of labels, radios, and checkboxes\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline {\n    margin-top: 0;\n    margin-bottom: 0;\n    padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n  }\n  // Account for padding we're adding to ensure the alignment and of help text\n  // and other content below items\n  .radio,\n  .checkbox {\n    min-height: (@line-height-computed + (@padding-base-vertical + 1));\n  }\n\n  // Make form groups behave like rows\n  .form-group {\n    .make-row();\n  }\n\n  .form-control-static {\n    padding-top: (@padding-base-vertical + 1);\n  }\n\n  // Only right align form labels here when the columns stop stacking\n  @media (min-width: @screen-sm-min) {\n    .control-label {\n      text-align: right;\n    }\n  }\n\n  // Validation states\n  //\n  // Reposition the icon because it's now within a grid column and columns have\n  // `position: relative;` on them. Also accounts for the grid gutter padding.\n  .has-feedback .form-control-feedback {\n    top: 0;\n    right: (@grid-gutter-width / 2);\n  }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n  display: inline-block;\n  margin-bottom: 0; // For input.btn\n  font-weight: @btn-font-weight;\n  text-align: center;\n  vertical-align: middle;\n  cursor: pointer;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  white-space: nowrap;\n  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);\n  .user-select(none);\n\n  &,\n  &:active,\n  &.active {\n    &:focus {\n      .tab-focus();\n    }\n  }\n\n  &:hover,\n  &:focus {\n    color: @btn-default-color;\n    text-decoration: none;\n  }\n\n  &:active,\n  &.active {\n    outline: 0;\n    background-image: none;\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: not-allowed;\n    pointer-events: none; // Future-proof disabling of clicks\n    .opacity(.65);\n    .box-shadow(none);\n  }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n  color: @link-color;\n  font-weight: normal;\n  cursor: pointer;\n  border-radius: 0;\n\n  &,\n  &:active,\n  &[disabled],\n  fieldset[disabled] & {\n    background-color: transparent;\n    .box-shadow(none);\n  }\n  &,\n  &:hover,\n  &:focus,\n  &:active {\n    border-color: transparent;\n  }\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: underline;\n    background-color: transparent;\n  }\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus {\n      color: @btn-link-disabled-color;\n      text-decoration: none;\n    }\n  }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n  // line-height: ensure even-numbered height of button next to large input\n  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n.btn-sm {\n  // line-height: ensure proper height of button next to small input\n  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n  display: block;\n  width: 100%;\n  padding-left: 0;\n  padding-right: 0;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n  > .btn {\n    position: relative;\n    float: left;\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 2;\n    }\n    &:focus {\n      // Remove focus outline when dropdown JS adds it after closing the menu\n      outline: none;\n    }\n  }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -1px;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  margin-left: -5px; // Offset the first child's margin\n  &:extend(.clearfix all);\n\n  .btn-group,\n  .input-group {\n    float: left;\n  }\n  > .btn,\n  > .btn-group,\n  > .input-group {\n    margin-left: 5px;\n  }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  &:not(:last-child):not(.dropdown-toggle) {\n    .border-right-radius(0);\n  }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-right-radius(0);\n  }\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n  .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    .box-shadow(none);\n  }\n}\n\n\n// Reposition the caret\n.btn .caret {\n  margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n  border-width: @caret-width-large @caret-width-large 0;\n  border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n  border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n  > .btn,\n  > .btn-group,\n  > .btn-group > .btn {\n    display: block;\n    float: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  // Clear floats so dropdown menus can be properly placed\n  > .btn-group {\n    &:extend(.clearfix all);\n    > .btn {\n      float: none;\n    }\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n    margin-top: -1px;\n    margin-left: 0;\n  }\n}\n\n.btn-group-vertical > .btn {\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n  &:first-child:not(:last-child) {\n    border-top-right-radius: @border-radius-base;\n    .border-bottom-radius(0);\n  }\n  &:last-child:not(:first-child) {\n    border-bottom-left-radius: @border-radius-base;\n    .border-top-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-bottom-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-top-radius(0);\n}\n\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n  > .btn,\n  > .btn-group {\n    float: none;\n    display: table-cell;\n    width: 1%;\n  }\n  > .btn-group .btn {\n    width: 100%;\n  }\n}\n\n\n// Checkbox and radio options\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n  display: none;\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.\n\n.fade {\n  opacity: 0;\n  .transition(opacity .15s linear);\n  &.in {\n    opacity: 1;\n  }\n}\n\n.collapse {\n  display: none;\n  &.in {\n    display: block;\n  }\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  .transition(height .35s ease);\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n//  Star\n\n// Import the fonts\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: ~\"url('@{icon-font-path}@{icon-font-name}.eot')\";\n  src: ~\"url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype')\",\n       ~\"url('@{icon-font-path}@{icon-font-name}.woff') format('woff')\",\n       ~\"url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype')\",\n       ~\"url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg')\";\n}\n\n// Catchall baseclass\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk               { &:before { content: \"\\2a\"; } }\n.glyphicon-plus                   { &:before { content: \"\\2b\"; } }\n.glyphicon-euro                   { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus                  { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud                  { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope               { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil                 { &:before { content: \"\\270f\"; } }\n.glyphicon-glass                  { &:before { content: \"\\e001\"; } }\n.glyphicon-music                  { &:before { content: \"\\e002\"; } }\n.glyphicon-search                 { &:before { content: \"\\e003\"; } }\n.glyphicon-heart                  { &:before { content: \"\\e005\"; } }\n.glyphicon-star                   { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty             { &:before { content: \"\\e007\"; } }\n.glyphicon-user                   { &:before { content: \"\\e008\"; } }\n.glyphicon-film                   { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large               { &:before { content: \"\\e010\"; } }\n.glyphicon-th                     { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list                { &:before { content: \"\\e012\"; } }\n.glyphicon-ok                     { &:before { content: \"\\e013\"; } }\n.glyphicon-remove                 { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in                { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out               { &:before { content: \"\\e016\"; } }\n.glyphicon-off                    { &:before { content: \"\\e017\"; } }\n.glyphicon-signal                 { &:before { content: \"\\e018\"; } }\n.glyphicon-cog                    { &:before { content: \"\\e019\"; } }\n.glyphicon-trash                  { &:before { content: \"\\e020\"; } }\n.glyphicon-home                   { &:before { content: \"\\e021\"; } }\n.glyphicon-file                   { &:before { content: \"\\e022\"; } }\n.glyphicon-time                   { &:before { content: \"\\e023\"; } }\n.glyphicon-road                   { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt           { &:before { content: \"\\e025\"; } }\n.glyphicon-download               { &:before { content: \"\\e026\"; } }\n.glyphicon-upload                 { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox                  { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle            { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat                 { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh                { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt               { &:before { content: \"\\e032\"; } }\n.glyphicon-lock                   { &:before { content: \"\\e033\"; } }\n.glyphicon-flag                   { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones             { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off             { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down            { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up              { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode                 { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode                { &:before { content: \"\\e040\"; } }\n.glyphicon-tag                    { &:before { content: \"\\e041\"; } }\n.glyphicon-tags                   { &:before { content: \"\\e042\"; } }\n.glyphicon-book                   { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark               { &:before { content: \"\\e044\"; } }\n.glyphicon-print                  { &:before { content: \"\\e045\"; } }\n.glyphicon-camera                 { &:before { content: \"\\e046\"; } }\n.glyphicon-font                   { &:before { content: \"\\e047\"; } }\n.glyphicon-bold                   { &:before { content: \"\\e048\"; } }\n.glyphicon-italic                 { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height            { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width             { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left             { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center           { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right            { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify          { &:before { content: \"\\e055\"; } }\n.glyphicon-list                   { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left            { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right           { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video         { &:before { content: \"\\e059\"; } }\n.glyphicon-picture                { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker             { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust                 { &:before { content: \"\\e063\"; } }\n.glyphicon-tint                   { &:before { content: \"\\e064\"; } }\n.glyphicon-edit                   { &:before { content: \"\\e065\"; } }\n.glyphicon-share                  { &:before { content: \"\\e066\"; } }\n.glyphicon-check                  { &:before { content: \"\\e067\"; } }\n.glyphicon-move                   { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward          { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward          { &:before { content: \"\\e070\"; } }\n.glyphicon-backward               { &:before { content: \"\\e071\"; } }\n.glyphicon-play                   { &:before { content: \"\\e072\"; } }\n.glyphicon-pause                  { &:before { content: \"\\e073\"; } }\n.glyphicon-stop                   { &:before { content: \"\\e074\"; } }\n.glyphicon-forward                { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward           { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward           { &:before { content: \"\\e077\"; } }\n.glyphicon-eject                  { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left           { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right          { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign              { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign             { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign            { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign                { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign          { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign              { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot             { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle          { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle              { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle             { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left             { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right            { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up               { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down             { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt              { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full            { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small           { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign       { &:before { content: \"\\e101\"; } }\n.glyphicon-gift                   { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf                   { &:before { content: \"\\e103\"; } }\n.glyphicon-fire                   { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open               { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close              { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign           { &:before { content: \"\\e107\"; } }\n.glyphicon-plane                  { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar               { &:before { content: \"\\e109\"; } }\n.glyphicon-random                 { &:before { content: \"\\e110\"; } }\n.glyphicon-comment                { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet                 { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up             { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down           { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet                { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart          { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close           { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open            { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical        { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal      { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd                    { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn               { &:before { content: \"\\e122\"; } }\n.glyphicon-bell                   { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate            { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up              { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down            { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right             { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left              { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up                { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down              { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right     { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left      { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up        { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down      { &:before { content: \"\\e134\"; } }\n.glyphicon-globe                  { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench                 { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks                  { &:before { content: \"\\e137\"; } }\n.glyphicon-filter                 { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase              { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen             { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard              { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip              { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty            { &:before { content: \"\\e143\"; } }\n.glyphicon-link                   { &:before { content: \"\\e144\"; } }\n.glyphicon-phone                  { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin                { &:before { content: \"\\e146\"; } }\n.glyphicon-usd                    { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp                    { &:before { content: \"\\e149\"; } }\n.glyphicon-sort                   { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet       { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt   { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order          { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt      { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes     { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked              { &:before { content: \"\\e157\"; } }\n.glyphicon-expand                 { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down          { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up            { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in                 { &:before { content: \"\\e161\"; } }\n.glyphicon-flash                  { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out                { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window             { &:before { content: \"\\e164\"; } }\n.glyphicon-record                 { &:before { content: \"\\e165\"; } }\n.glyphicon-save                   { &:before { content: \"\\e166\"; } }\n.glyphicon-open                   { &:before { content: \"\\e167\"; } }\n.glyphicon-saved                  { &:before { content: \"\\e168\"; } }\n.glyphicon-import                 { &:before { content: \"\\e169\"; } }\n.glyphicon-export                 { &:before { content: \"\\e170\"; } }\n.glyphicon-send                   { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk            { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved           { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove          { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save            { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open            { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card            { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer               { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery                { &:before { content: \"\\e179\"; } }\n.glyphicon-header                 { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed             { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone               { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt              { &:before { content: \"\\e183\"; } }\n.glyphicon-tower                  { &:before { content: \"\\e184\"; } }\n.glyphicon-stats                  { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video               { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video               { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles              { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo           { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby            { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1              { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1              { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1              { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark         { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark      { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download         { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload           { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer           { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous         { &:before { content: \"\\e200\"; } }\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top:   @caret-width-base solid;\n  border-right: @caret-width-base solid transparent;\n  border-left:  @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropdown {\n  position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n  outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: @zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0; // override default ul\n  list-style: none;\n  font-size: @font-size-base;\n  background-color: @dropdown-bg;\n  border: 1px solid @dropdown-fallback-border; // IE8 fallback\n  border: 1px solid @dropdown-border;\n  border-radius: @border-radius-base;\n  .box-shadow(0 6px 12px rgba(0,0,0,.175));\n  background-clip: padding-box;\n\n  // Aligns the dropdown menu to right\n  //\n  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n  &.pull-right {\n    right: 0;\n    left: auto;\n  }\n\n  // Dividers (basically an hr) within the dropdown\n  .divider {\n    .nav-divider(@dropdown-divider-bg);\n  }\n\n  // Links within the dropdown menu\n  > li > a {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: normal;\n    line-height: @line-height-base;\n    color: @dropdown-link-color;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n  }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: @dropdown-link-hover-color;\n    background-color: @dropdown-link-hover-bg;\n  }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-active-color;\n    text-decoration: none;\n    outline: 0;\n    background-color: @dropdown-link-active-bg;\n  }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-disabled-color;\n  }\n}\n// Nuke hover/focus effects\n.dropdown-menu > .disabled > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    background-color: transparent;\n    background-image: none; // Remove CSS gradient\n    .reset-filter();\n    cursor: not-allowed;\n  }\n}\n\n// Open state for the dropdown\n.open {\n  // Show the menu\n  > .dropdown-menu {\n    display: block;\n  }\n\n  // Remove the outline when :focus is triggered\n  > a {\n    outline: 0;\n  }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n  left: auto; // Reset the default from `.dropdown-menu`\n  right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: @font-size-small;\n  line-height: @line-height-base;\n  color: @dropdown-header-color;\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n  // Reverse the caret\n  .caret {\n    border-top: 0;\n    border-bottom: @caret-width-base solid;\n    content: \"\";\n  }\n  // Different positioning for bottom up menu\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-bottom: 1px;\n  }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-right {\n    .dropdown-menu {\n      .dropdown-menu-right();\n    }\n    // Necessary for overrides of the default right aligned menu.\n    // Will remove come v4 in all likelihood.\n    .dropdown-menu-left {\n      .dropdown-menu-left();\n    }\n  }\n}\n\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n  position: relative; // For dropdowns\n  display: table;\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n  // Undo padding and float of grid classes\n  &[class*=\"col-\"] {\n    float: none;\n    padding-left: 0;\n    padding-right: 0;\n  }\n\n  .form-control {\n    // Ensure that the input is always above the *appended* addon button for\n    // proper border colors.\n    position: relative;\n    z-index: 2;\n\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\n    // select elements in input groups. To fix it, we float the input. Details:\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n    float: left;\n\n    width: 100%;\n    margin-bottom: 0;\n  }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn { .input-lg(); }\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn { .input-sm(); }\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  font-weight: normal;\n  line-height: 1;\n  color: @input-color;\n  text-align: center;\n  background-color: @input-group-addon-bg;\n  border: 1px solid @input-group-addon-border-color;\n  border-radius: @border-radius-base;\n\n  // Sizing\n  &.input-sm {\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    border-radius: @border-radius-small;\n  }\n  &.input-lg {\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    border-radius: @border-radius-large;\n  }\n\n  // Nuke default margins from checkboxes and radios to vertically center within.\n  input[type=\"radio\"],\n  input[type=\"checkbox\"] {\n    margin-top: 0;\n  }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  .border-right-radius(0);\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  .border-left-radius(0);\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n  position: relative;\n  // Jankily prevent input button groups from wrapping with `white-space` and\n  // `font-size` in combination with `inline-block` on buttons.\n  font-size: 0;\n  white-space: nowrap;\n\n  // Negative margin for spacing, position for bringing hovered/focused/actived\n  // element above the siblings.\n  > .btn {\n    position: relative;\n    + .btn {\n      margin-left: -1px;\n    }\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active {\n      z-index: 2;\n    }\n  }\n\n  // Negative margin to only have a 1px border between the two\n  &:first-child {\n    > .btn,\n    > .btn-group {\n      margin-right: -1px;\n    }\n  }\n  &:last-child {\n    > .btn,\n    > .btn-group {\n      margin-left: -1px;\n    }\n  }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n  margin-bottom: 0;\n  padding-left: 0; // Override default ul/ol\n  list-style: none;\n  &:extend(.clearfix all);\n\n  > li {\n    position: relative;\n    display: block;\n\n    > a {\n      position: relative;\n      display: block;\n      padding: @nav-link-padding;\n      &:hover,\n      &:focus {\n        text-decoration: none;\n        background-color: @nav-link-hover-bg;\n      }\n    }\n\n    // Disabled state sets text to gray and nukes hover/tab effects\n    &.disabled > a {\n      color: @nav-disabled-link-color;\n\n      &:hover,\n      &:focus {\n        color: @nav-disabled-link-hover-color;\n        text-decoration: none;\n        background-color: transparent;\n        cursor: not-allowed;\n      }\n    }\n  }\n\n  // Open dropdowns\n  .open > a {\n    &,\n    &:hover,\n    &:focus {\n      background-color: @nav-link-hover-bg;\n      border-color: @link-color;\n    }\n  }\n\n  // Nav dividers (deprecated with v3.0.1)\n  //\n  // This should have been removed in v3 with the dropping of `.nav-list`, but\n  // we missed it. We don't currently support this anywhere, but in the interest\n  // of maintaining backward compatibility in case you use it, it's deprecated.\n  .nav-divider {\n    .nav-divider();\n  }\n\n  // Prevent IE8 from misplacing imgs\n  //\n  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n  > li > a > img {\n    max-width: none;\n  }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n  border-bottom: 1px solid @nav-tabs-border-color;\n  > li {\n    float: left;\n    // Make the list-items overlay the bottom border\n    margin-bottom: -1px;\n\n    // Actual tabs (as links)\n    > a {\n      margin-right: 2px;\n      line-height: @line-height-base;\n      border: 1px solid transparent;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n      &:hover {\n        border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n      }\n    }\n\n    // Active state, and its :hover to override normal :hover\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-tabs-active-link-hover-color;\n        background-color: @nav-tabs-active-link-hover-bg;\n        border: 1px solid @nav-tabs-active-link-hover-border-color;\n        border-bottom-color: transparent;\n        cursor: default;\n      }\n    }\n  }\n  // pulling this in mainly for less shorthand\n  &.nav-justified {\n    .nav-justified();\n    .nav-tabs-justified();\n  }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n  > li {\n    float: left;\n\n    // Links rendered as pills\n    > a {\n      border-radius: @nav-pills-border-radius;\n    }\n    + li {\n      margin-left: 2px;\n    }\n\n    // Active state\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-pills-active-link-hover-color;\n        background-color: @nav-pills-active-link-hover-bg;\n      }\n    }\n  }\n}\n\n\n// Stacked pills\n.nav-stacked {\n  > li {\n    float: none;\n    + li {\n      margin-top: 2px;\n      margin-left: 0; // no need for this gap between nav items\n    }\n  }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n  width: 100%;\n\n  > li {\n    float: none;\n     > a {\n      text-align: center;\n      margin-bottom: 5px;\n    }\n  }\n\n  > .dropdown .dropdown-menu {\n    top: auto;\n    left: auto;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li {\n      display: table-cell;\n      width: 1%;\n      > a {\n        margin-bottom: 0;\n      }\n    }\n  }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n  border-bottom: 0;\n\n  > li > a {\n    // Override margin from .nav-tabs\n    margin-right: 0;\n    border-radius: @border-radius-base;\n  }\n\n  > .active > a,\n  > .active > a:hover,\n  > .active > a:focus {\n    border: 1px solid @nav-tabs-justified-link-border-color;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li > a {\n      border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n    }\n    > .active > a,\n    > .active > a:hover,\n    > .active > a:focus {\n      border-bottom-color: @nav-tabs-justified-active-link-border-color;\n    }\n  }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n  // make dropdown border overlap tab border\n  margin-top: -1px;\n  // Remove the top rounded corners here since there is a hard edge above the menu\n  .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n  margin-bottom: @navbar-margin-bottom;\n  border: 1px solid transparent;\n\n  // Prevent floats from breaking the navbar\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: @navbar-border-radius;\n  }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n  }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n  max-height: @navbar-collapse-max-height;\n  overflow-x: visible;\n  padding-right: @navbar-padding-horizontal;\n  padding-left:  @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n  &:extend(.clearfix all);\n  -webkit-overflow-scrolling: touch;\n\n  &.in {\n    overflow-y: auto;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n\n    &.collapse {\n      display: block !important;\n      height: auto !important;\n      padding-bottom: 0; // Override default setting\n      overflow: visible !important;\n    }\n\n    &.in {\n      overflow-y: visible;\n    }\n\n    // Undo the collapse side padding for navbars with containers to ensure\n    // alignment of right-aligned contents.\n    .navbar-fixed-top &,\n    .navbar-static-top &,\n    .navbar-fixed-bottom & {\n      padding-left: 0;\n      padding-right: 0;\n    }\n  }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n  > .navbar-header,\n  > .navbar-collapse {\n    margin-right: -@navbar-padding-horizontal;\n    margin-left:  -@navbar-padding-horizontal;\n\n    @media (min-width: @grid-float-breakpoint) {\n      margin-right: 0;\n      margin-left:  0;\n    }\n  }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n  z-index: @zindex-navbar;\n  border-width: 0 0 1px;\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: @zindex-navbar-fixed;\n\n  // Undo the rounded corners\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0; // override .navbar defaults\n  border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n  float: left;\n  padding: @navbar-padding-vertical @navbar-padding-horizontal;\n  font-size: @font-size-large;\n  line-height: @line-height-computed;\n  height: @navbar-height;\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    .navbar > .container &,\n    .navbar > .container-fluid & {\n      margin-left: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: @navbar-padding-horizontal;\n  padding: 9px 10px;\n  .navbar-vertical-align(34px);\n  background-color: transparent;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  border-radius: @border-radius-base;\n\n  // We remove the `outline` here, but later compensate by attaching `:hover`\n  // styles to `:focus`.\n  &:focus {\n    outline: none;\n  }\n\n  // Bars\n  .icon-bar {\n    display: block;\n    width: 22px;\n    height: 2px;\n    border-radius: 1px;\n  }\n  .icon-bar + .icon-bar {\n    margin-top: 4px;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    display: none;\n  }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n  margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n  > li > a {\n    padding-top:    10px;\n    padding-bottom: 10px;\n    line-height: @line-height-computed;\n  }\n\n  @media (max-width: @grid-float-breakpoint-max) {\n    // Dropdowns get custom display when collapsed\n    .open .dropdown-menu {\n      position: static;\n      float: none;\n      width: auto;\n      margin-top: 0;\n      background-color: transparent;\n      border: 0;\n      box-shadow: none;\n      > li > a,\n      .dropdown-header {\n        padding: 5px 15px 5px 25px;\n      }\n      > li > a {\n        line-height: @line-height-computed;\n        &:hover,\n        &:focus {\n          background-image: none;\n        }\n      }\n    }\n  }\n\n  // Uncollapse the nav\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin: 0;\n\n    > li {\n      float: left;\n      > a {\n        padding-top:    @navbar-padding-vertical;\n        padding-bottom: @navbar-padding-vertical;\n      }\n    }\n\n    &.navbar-right:last-child {\n      margin-right: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-left  { .pull-left(); }\n  .navbar-right { .pull-right(); }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n  margin-left: -@navbar-padding-horizontal;\n  margin-right: -@navbar-padding-horizontal;\n  padding: 10px @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n\n  // Mixin behavior for optimum display\n  .form-inline();\n\n  .form-group {\n    @media (max-width: @grid-float-breakpoint-max) {\n      margin-bottom: 5px;\n    }\n  }\n\n  // Vertically center in expanded, horizontal navbar\n  .navbar-vertical-align(@input-height-base);\n\n  // Undo 100% width for pull classes\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    .box-shadow(none);\n\n    // Outdent the form if last child to line up with content down the page\n    &.navbar-right:last-child {\n      margin-right: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n  .navbar-vertical-align(@input-height-base);\n\n  &.btn-sm {\n    .navbar-vertical-align(@input-height-small);\n  }\n  &.btn-xs {\n    .navbar-vertical-align(22);\n  }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n  .navbar-vertical-align(@line-height-computed);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin-left: @navbar-padding-horizontal;\n    margin-right: @navbar-padding-horizontal;\n\n    // Outdent the form if last child to line up with content down the page\n    &.navbar-right:last-child {\n      margin-right: 0;\n    }\n  }\n}\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  background-color: @navbar-default-bg;\n  border-color: @navbar-default-border;\n\n  .navbar-brand {\n    color: @navbar-default-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-brand-hover-color;\n      background-color: @navbar-default-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-default-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-default-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-hover-color;\n        background-color: @navbar-default-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-active-color;\n        background-color: @navbar-default-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n        background-color: @navbar-default-link-disabled-bg;\n      }\n    }\n  }\n\n  .navbar-toggle {\n    border-color: @navbar-default-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-default-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-default-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: @navbar-default-border;\n  }\n\n  // Dropdown menu items\n  .navbar-nav {\n    // Remove background color from open dropdown\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-default-link-active-bg;\n        color: @navbar-default-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display when collapsed\n      .open .dropdown-menu {\n        > li > a {\n          color: @navbar-default-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-hover-color;\n            background-color: @navbar-default-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-active-color;\n            background-color: @navbar-default-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-disabled-color;\n            background-color: @navbar-default-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n\n  // Links in navbars\n  //\n  // Add a class to ensure links outside the navbar nav are colored correctly.\n\n  .navbar-link {\n    color: @navbar-default-link-color;\n    &:hover {\n      color: @navbar-default-link-hover-color;\n    }\n  }\n\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n  background-color: @navbar-inverse-bg;\n  border-color: @navbar-inverse-border;\n\n  .navbar-brand {\n    color: @navbar-inverse-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-brand-hover-color;\n      background-color: @navbar-inverse-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-inverse-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-inverse-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-hover-color;\n        background-color: @navbar-inverse-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-active-color;\n        background-color: @navbar-inverse-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n        background-color: @navbar-inverse-link-disabled-bg;\n      }\n    }\n  }\n\n  // Darken the responsive nav toggle\n  .navbar-toggle {\n    border-color: @navbar-inverse-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-inverse-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-inverse-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: darken(@navbar-inverse-bg, 7%);\n  }\n\n  // Dropdowns\n  .navbar-nav {\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-inverse-link-active-bg;\n        color: @navbar-inverse-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display\n      .open .dropdown-menu {\n        > .dropdown-header {\n          border-color: @navbar-inverse-border;\n        }\n        .divider {\n          background-color: @navbar-inverse-border;\n        }\n        > li > a {\n          color: @navbar-inverse-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-hover-color;\n            background-color: @navbar-inverse-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-active-color;\n            background-color: @navbar-inverse-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-disabled-color;\n            background-color: @navbar-inverse-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  .navbar-link {\n    color: @navbar-inverse-link-color;\n    &:hover {\n      color: @navbar-inverse-link-hover-color;\n    }\n  }\n\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n  .clearfix();\n}\n.center-block {\n  .center-block();\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n  display: none !important;\n  visibility: hidden !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n  position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n  margin-bottom: @line-height-computed;\n  list-style: none;\n  background-color: @breadcrumb-bg;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline-block;\n\n    + li:before {\n      content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n      padding: 0 5px;\n      color: @breadcrumb-color;\n    }\n  }\n\n  > .active {\n    color: @breadcrumb-active-color;\n  }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline; // Remove list-style and block-level defaults\n    > a,\n    > span {\n      position: relative;\n      float: left; // Collapse white-space\n      padding: @padding-base-vertical @padding-base-horizontal;\n      line-height: @line-height-base;\n      text-decoration: none;\n      color: @pagination-color;\n      background-color: @pagination-bg;\n      border: 1px solid @pagination-border;\n      margin-left: -1px;\n    }\n    &:first-child {\n      > a,\n      > span {\n        margin-left: 0;\n        .border-left-radius(@border-radius-base);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius-base);\n      }\n    }\n  }\n\n  > li > a,\n  > li > span {\n    &:hover,\n    &:focus {\n      color: @pagination-hover-color;\n      background-color: @pagination-hover-bg;\n      border-color: @pagination-hover-border;\n    }\n  }\n\n  > .active > a,\n  > .active > span {\n    &,\n    &:hover,\n    &:focus {\n      z-index: 2;\n      color: @pagination-active-color;\n      background-color: @pagination-active-bg;\n      border-color: @pagination-active-border;\n      cursor: default;\n    }\n  }\n\n  > .disabled {\n    > span,\n    > span:hover,\n    > span:focus,\n    > a,\n    > a:hover,\n    > a:focus {\n      color: @pagination-disabled-color;\n      background-color: @pagination-disabled-bg;\n      border-color: @pagination-disabled-border;\n      cursor: not-allowed;\n    }\n  }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small);\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  list-style: none;\n  text-align: center;\n  &:extend(.clearfix all);\n  li {\n    display: inline;\n    > a,\n    > span {\n      display: inline-block;\n      padding: 5px 14px;\n      background-color: @pager-bg;\n      border: 1px solid @pager-border;\n      border-radius: @pager-border-radius;\n    }\n\n    > a:hover,\n    > a:focus {\n      text-decoration: none;\n      background-color: @pager-hover-bg;\n    }\n  }\n\n  .next {\n    > a,\n    > span {\n      float: right;\n    }\n  }\n\n  .previous {\n    > a,\n    > span {\n      float: left;\n    }\n  }\n\n  .disabled {\n    > a,\n    > a:hover,\n    > a:focus,\n    > span {\n      color: @pager-disabled-color;\n      background-color: @pager-bg;\n      cursor: not-allowed;\n    }\n  }\n\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: @label-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n\n  // Add hover effects, but only for links\n  &[href] {\n    &:hover,\n    &:focus {\n      color: @label-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Empty labels collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for labels in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n  .label-variant(@label-default-bg);\n}\n\n.label-primary {\n  .label-variant(@label-primary-bg);\n}\n\n.label-success {\n  .label-variant(@label-success-bg);\n}\n\n.label-info {\n  .label-variant(@label-info-bg);\n}\n\n.label-warning {\n  .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n  .label-variant(@label-danger-bg);\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base classes\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: @font-size-small;\n  font-weight: @badge-font-weight;\n  color: @badge-color;\n  line-height: @badge-line-height;\n  vertical-align: baseline;\n  white-space: nowrap;\n  text-align: center;\n  background-color: @badge-bg;\n  border-radius: @badge-border-radius;\n\n  // Empty badges collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for badges in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n  .btn-xs & {\n    top: 0;\n    padding: 1px 5px;\n  }\n}\n\n// Hover state, but only for links\na.badge {\n  &:hover,\n  &:focus {\n    color: @badge-link-hover-color;\n    text-decoration: none;\n    cursor: pointer;\n  }\n}\n\n// Account for counters in navs\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: @badge-active-color;\n  background-color: @badge-active-bg;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n  padding: @jumbotron-padding;\n  margin-bottom: @jumbotron-padding;\n  color: @jumbotron-color;\n  background-color: @jumbotron-bg;\n\n  h1,\n  .h1 {\n    color: @jumbotron-heading-color;\n  }\n  p {\n    margin-bottom: (@jumbotron-padding / 2);\n    font-size: @jumbotron-font-size;\n    font-weight: 200;\n  }\n\n  .container & {\n    border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n  }\n\n  .container {\n    max-width: 100%;\n  }\n\n  @media screen and (min-width: @screen-sm-min) {\n    padding-top:    (@jumbotron-padding * 1.6);\n    padding-bottom: (@jumbotron-padding * 1.6);\n\n    .container & {\n      padding-left:  (@jumbotron-padding * 2);\n      padding-right: (@jumbotron-padding * 2);\n    }\n\n    h1,\n    .h1 {\n      font-size: (@font-size-base * 4.5);\n    }\n  }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n  padding: @alert-padding;\n  margin-bottom: @line-height-computed;\n  border: 1px solid transparent;\n  border-radius: @alert-border-radius;\n\n  // Headings for larger alerts\n  h4 {\n    margin-top: 0;\n    // Specified for the h4 to prevent conflicts of changing @headings-color\n    color: inherit;\n  }\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: @alert-link-font-weight;\n  }\n\n  // Improve alignment and spacing of inner content\n  > p,\n  > ul {\n    margin-bottom: 0;\n  }\n  > p + p {\n    margin-top: 5px;\n  }\n}\n\n// Dismissable alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable {\n padding-right: (@alert-padding + 20);\n\n  // Adjust close link position\n  .close {\n    position: relative;\n    top: -2px;\n    right: -21px;\n    color: inherit;\n  }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n.alert-info {\n  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n.alert-warning {\n  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n.alert-danger {\n  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n  overflow: hidden;\n  height: @line-height-computed;\n  margin-bottom: @line-height-computed;\n  background-color: @progress-bg;\n  border-radius: @border-radius-base;\n  .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: @font-size-small;\n  line-height: @line-height-computed;\n  color: @progress-bar-color;\n  text-align: center;\n  background-color: @progress-bar-bg;\n  .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n  .transition(width .6s ease);\n}\n\n// Striped bars\n.progress-striped .progress-bar {\n  #gradient > .striped();\n  background-size: 40px 40px;\n}\n\n// Call animation for the active one\n.progress.active .progress-bar {\n  .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n  .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n  .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n  .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n  .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Media objects\n// Source: http://stubbornella.org/content/?p=497\n// --------------------------------------------------\n\n\n// Common styles\n// -------------------------\n\n// Clear the floats\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n\n// Proper spacing between instances of .media\n.media,\n.media .media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n\n// For images and videos, set to block\n.media-object {\n  display: block;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n  margin: 0 0 5px;\n}\n\n\n// Media image alignment\n// -------------------------\n\n.media {\n  > .pull-left {\n    margin-right: 10px;\n  }\n  > .pull-right {\n    margin-left: 10px;\n  }\n}\n\n\n// Media list variation\n// -------------------------\n\n// Undo default ul/ol styles\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on 
        ,
          , or
          .\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n\n // Align badges within list items\n > .badge {\n float: right;\n }\n > .badge + .badge {\n margin-right: 5px;\n }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @list-group-hover-bg;\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: 10px 15px;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table {\n margin-bottom: 0;\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n overflow: hidden; // crop contents when collapsed\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n + .panel-collapse .panel-body {\n border-top: 1px solid @panel-inner-border;\n }\n }\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: auto;\n overflow-y: scroll;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0)}\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: none;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n margin-top: 15px;\n padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n visibility: visible;\n font-size: @font-size-small;\n line-height: 1.4;\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n text-decoration: none;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n text-align: left; // Reset given new insertion method\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Overrides for proper insertion\n white-space: normal;\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 18px;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: 5px 5px 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#browsers\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n"]} \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap.min.css b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap.min.css new file mode 100644 index 000000000..679272d25 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.eot b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..4a4ca865d67e86f961bc6e2ef00bffa4e34bb9ed GIT binary patch literal 20335 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

          !oRptb@n+ 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 literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.svg b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 000000000..e3e2dc739 --- /dev/null +++ b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.ttf b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..67fa00bf83801d2fa568546b982c80d27f6ef74e GIT binary patch literal 41280 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

          PBK;&Wcg|NX{>QR@W3{K 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 literal 0 HcmV?d00001 diff --git a/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.woff b/erupt-extra/erupt-flow/src/console/public/modeler/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..8c54182aa5d4d1ab3c9171976b615c1dcb1dc187 GIT binary patch literal 23320 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 mX4Rts (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + if ($next.hasClass('active')) return this.sliding = false + + var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid.bs.carousel', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0) + }) + .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid.bs.carousel') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.1.1 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') option = !option + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.1.1 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $('