Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<<importTiddlers>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<!--{{{-->
<div class='header' role='banner' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; box-sizing: border-box; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
/%
!gallery data
{"data":[
	[""]
],
"options":{}}
!%/
|visibleName|рабочий материал|
|ссылка на материал|./environment2/PDF_2/26. РМ. Мир на карте.pdf|
|занимает памяти|55 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/01. Знакомство с предметом/|
!!!Описание
На&nbsp;первом уроке мы&nbsp;познакомимся с&nbsp;предметом &laquo;Окружающий мир&raquo;. Этот предмет изучает так много разных вещей, что в&nbsp;них можно запутаться. Мы&nbsp;обсудим, как разделить их&nbsp;на&nbsp;части и&nbsp;в&nbsp;каком порядке изучать.
!Дополнительно об уроке

!gallery data
{"data":[
	["01 природа.jpg"],
	["02 общество.jpg"],
	["03 миры живого и неживого.jpg"],
	["04 разделили только в уме.jpg"]
],
"options":{}}
!%/
|тип шага|video|
|ссылка на контент шага|https://youtu.be/JsfBUDNRrFo|
|visibleName|Знакомство с&nbsp;предметом|
|ссылка на контент шага|./environment/task_01-2/index.html|
|тип шага|task|
|visibleName|Живое и&nbsp;неживое|
|ссылка на контент шага|./environment/JPG/text_01_1.jpg|
|тип шага|pager|
|visibleName|Что изучает окружающий мир|
|table of contents thumb|text_01_1.jpg|
|ссылка на контент шага|./environment/JPG/text_01_2.jpg|
|тип шага|pager|
|visibleName|Живое и&nbsp;неживое|
|table of contents thumb|text_01_2.jpg|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/10. Насекомые/|
!!!Описание
Зачем пчеле волосатые ноги? Чем разрисованы крылья бабочки? Почему гусеницы превращаются в&nbsp;куколок, а&nbsp;люди нет? Что ест божья коровка? Какая польза от&nbsp;комаров? На&nbsp;уроке мы&nbsp;ответим на&nbsp;все эти вопросы.
!Дополнительно об уроке

!gallery data
{"data":[
	["01 ноги — таракан.jpg",null,null,null],
	["02 ноги — кузнечик.jpg",null,null,null],
	["03 ноги — медведка.jpg",null,null,null],
	["04 ноги — пчела.jpg",null,null,null],
	["05 крылья — стрекоза.jpg",null,null,null],
	["06 крылья — жук.jpg",null,null,null],
	["07 крылья — чешуйки бабочки.jpg",null,null,null],
	["08 челюсти — жук.jpg",null,null,null],
	["08-1 клещи.jpg",null,null,null],
	["09 младенец.jpg",null,null,null],
	["10 взрослый.jpg",null,null,null],
	["11 старичок.jpg",null,null,null],
	["12 кузнечик жизненный цикл.jpg",null,null,null],
	["бабочка — гусеница.jpg","Бабочка — гусеница",null,null],
	["кузнечик.jpg","Кузнечик",null,null],
	["13 бабочка жизненный цикл.jpg",null,null,null],
	["13-02 жук-олень.jpg","","https://www.flickr.com/photos/beautiful_bugs/35161081060/","Tim Stratford"],
	["13-03 жук-олень личинка.jpg","","https://www.flickr.com/photos/79049846@N00/13896015687/in/photostream/","ginann"],
	["13-04 муха взрослая.jpg","","https://www.flickr.com/photos/143758785@N04/27566834386/in/photostream/","Ilvem89"],
	["13-05 муха личинка.jpg","","https://www.flickr.com/photos/askop/29701791570/","Seig & Alice Kopinitz"],
	["13-06 пчёлы взрослые и личинки.jpg","","https://www.flickr.com/photos/147403029@N04/32501496050/","Rachael Bonoan"],
	["13-07 пчёлы личинки.jpg","","https://www.flickr.com/photos/timmiller11/36293911202/","tim miller"],
	["13-08 кузнечик.jpg","","https://www.flickr.com/photos/38277036@N02/35465653602/","Helmut Issler"],
	["13-09 кузнечик личинка.jpg","","https://www.flickr.com/photos/diathesis/4960927232/in/photostream/","Geoffrey Wiseman"],
	["13-10 кузнечик взрослый и личинка.jpg","","https://www.flickr.com/photos/mohawkedgeekcris/6306609270/","Cris Ward"],
	["13-11 стрекоза взрослая.jpg","","https://www.flickr.com/photos/jayppics/2374620891/","Jamie Peters"],
	["13-12 стрекоза личинка.jpg","","https://www.flickr.com/photos/ukwildlife/4651031522/","Neil Phillips"],
	["13-13 таракан взрослый и личинки.jpg","","https://www.flickr.com/photos/kevinjudge/8386923729/","Kevin Judge"],
	["14 бабочка на цветке.jpg",null,"https://commons.wikimedia.org/wiki/File:Black-veined_white_(Aporia_crataegi)_male_underside.jpg","Charles J Sharp"],
	["15 гусеница ест лист.jpg",null,"https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Unidentifiednsect9444.JPG","А. Кабанов"],
	["20 платяная моль гусеница.jpg",null,"https://commons.wikimedia.org/wiki/File:XN_Tineola_bisselliella_0.jpg","Guido Gerding"],
	["20-2 платяная моль бабочка.jpg",null,"https://commons.wikimedia.org/wiki/File:Tineola.bisselliella.7218.jpg","Olaf Leillinger"],
	["20-3 платяная моль бабочка.jpg",null,"",""],
	["21 тутовый шелкопряд бабочка.jpg",null,"https://www.flickr.com/photos/josedelgar/26207386455/in/photolist-FVRGWB-9PWFHE","Jose Delgar"],
	["21-2 тутовый шелкопряд гусеница.jpg",null,"https://www.flickr.com/photos/salvovasta/7286708712/","salvo vasta"],
	["21-3 тутовый шелкопряд куколки.jpg",null,"https://www.flickr.com/photos/komhuus/8619552850/in/album-72157632994979213/","Kenneth Moore"],
	["21-4 тутовый шелкопряд бабочка.jpg",null,null,null],
	["22 бабочка махаон.jpg",null,null,null],
	["30 жук.jpg",null,null,null],
	["31 жук-листоед.jpg",null,null,null],
	["32 божья коровка.jpg",null,null,null],
	["32-3 тля.jpg",null,"https://commons.wikimedia.org/wiki/File:Aphidoidea_puceron_Luc_Viatour.jpg","Luc Viatour"],
	["33 колорадский жук вредит.jpg",null,"https://www.flickr.com/photos/36422831@N07/","oana mya"],
	["33-1 колорадский жук.jpg",null,"",""],
	["34 жук-короед.jpg",null,"https://www.flickr.com/photos/76790273@N07/14185494411/in","Matt Bertone"],
	["34-2 жук-короед.jpg",null,null,null],
	["34-3 ходы жука-короеда.jpg",null,"https://www.flickr.com/photos/robertporter/3725972936/","Robert Porter"],
	["40 оса.jpg",null,"https://www.flickr.com/photos/96675437@N06/9840220573/","CLIVE SLACK"],
	["41 шмель.jpg",null,"",""],
	["41-2 шмель.jpg",null,null,null],
	["42-2 пчела.jpg",null,null,null],
	["43 шершень.jpg",null,"https://www.flickr.com/photos/35065955@N06/6208113686/in/photolist-asAcUS","mark eden"],
	["44 муравей.jpg",null,"",""],
	["44-2 муравей.jpg",null,"https://fotki.yandex.ru/users/woodmen19/","Владимир Брюхов"],
	["44-3 муравьи.jpg",null,"https://fotki.yandex.ru/users/woodmen19/","Владимир Брюхов"],
	["45 пчела за прилавком.jpg",null,"",""],
	["50 муха.jpg",null,"",""],
	["50-2 муха.jpg",null,"https://fotki.yandex.ru/users/woodmen19/","Владимир Брюхов"],
	["51 комар.jpg",null,null,null],
	["51-2 комар.jpg",null,"http://insecta.pro/gallery/47554","Vladimir Bryukhov"]
],
"options":{}}
!%/
|visibleName|Насекомые|
|ссылка на контент шага|https://youtu.be/lXbInLC9-yk|
|тип шага|video|
|visibleName|Насекомые|
|ссылка на контент шага|./environment/task_10-4/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_10_1.jpg|
|тип шага|pager|
|visibleName|Строение насекомых|
|table of contents thumb|text_10_1.jpg|
|ссылка на контент шага|./environment/JPG/text_10_2.jpg|
|тип шага|pager|
|visibleName|Жизнь насекомых|
|table of contents thumb|text_10_2.jpg|
|ссылка на контент шага|./environment/JPG/text_10_3.jpg|
|тип шага|pager|
|visibleName|Бабочки и&nbsp;жуки|
|table of contents thumb|text_10_3.jpg|
|ссылка на контент шага|./environment/JPG/text_10_4.jpg|
|тип шага|pager|
|visibleName|Осы, муравьи, мухи, комары|
|table of contents thumb|text_10_4.jpg|
|ссылка на материал|./environment/PDF/10-Насекомые-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,3 Мб|
|ссылка на материал|./environment/PDF_2/10-Насекомые-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|232 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/11. Иглокожие/|
!!!Описание
В&nbsp;последнем районе беспозвоночных животных, который мы&nbsp;посетим, проживают морские звёзды и&nbsp;их&nbsp;родственники.
!Дополнительно об уроке

!gallery data
{"data":[
	["01-1 морская звезда.jpg",null,null,null],
	["01-2 морская звезда.jpg",null,"https://www.flickr.com/photos/7916953@N06/2143055030/in","Charlene-SJ"],
	["01-3 морская звезда.jpg",null,"https://www.flickr.com/photos/52718268@N02/5470287959/in","mentos2"],
	["02-1 ножки морской звезды.jpg",null,"https://www.flickr.com/photos/akiramedia/302125381/in/","Richard Perry"],
	["02-2 ножки морской звезды.jpg",null,"",""],
	["03 морские звёзды вокруг России.jpg",null,"",""],
	["04 морской ёж.jpg",null,"",""],
	["05-1 карандашный морской ёж.jpg",null,"",""],
	["05-2 карандашный морской ёж.jpg",null,"https://www.flickr.com/photos/usfwspacific/4967557671/in","USFWS - Pacific Region"],
	["06 колючий морской ёж.jpg",null,"https://commons.wikimedia.org/wiki/File:Sea_Urchin_in_Shedd_Aquarium_(Chicago,_IL)_28Nov07.JPG","Ingvar-fed"],
	["07-1 офиура.jpg",null,"",""],
	["07-2 офиура.jpg",null,"https://commons.wikimedia.org/wiki/File:Brittle_starfish_in_kona.jpg","Brocken Inaglory"],
	["07-3 офиура.jpg",null,"https://en.wikipedia.org/wiki/File:Expl2319_-_Flickr_-_NOAA_Photo_Library.jpg","Lophelia II 2010 Expedition, NOAA-OER/BOEMRE."],
	["07-4 офиура.jpg",null,"https://commons.wikimedia.org/wiki/File:Sanc0448_-_Flickr_-_NOAA_Photo_Library.jpg","G.P. Schmahl, Sanctuary Superintendent. Credit: NOAA/NOS/NMS/FGBNMS\nNational Marine Sanctuaries Media Library"],
	["07-5 офиура.jpg",null,"https://www.flickr.com/photos/dkeats/21349603975/in","Derek Keats"],
	["08-1 голотурия.jpg",null,"",""],
	["08-2 голотурия.jpg",null,"https://commons.wikimedia.org/wiki/File:Sea_Cucumber_(16847202237).jpg","NOAA's National Ocean Service"],
	["09 трепанг.jpg",null,"https://www.flickr.com/photos/117278953@N05/12586405993/in","VNIRO PHOTO"],
	["09-2 трепанг.jpg",null,null,null],
	["10 морская лилия.jpg",null,null,null]
],
"options":{}}
!%/
|visibleName|Иглокожие|
|тип шага|video|
|ссылка на контент шага|https://youtu.be/rdvdu1AkZR0|
|visibleName|У кого сколько ног?|
|ссылка на контент шага|./environment/task_11-2/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/task_11-5/index.html|
|тип шага|task|
|visibleName|Иглокожие|
|ссылка на контент шага|./environment/JPG/text_11_1.jpg|
|тип шага|pager|
|visibleName|Морские звёзды и&nbsp;ежи|
|table of contents thumb|text_11_1.jpg|
|ссылка на контент шага|./environment/JPG/text_11_2.jpg|
|тип шага|pager|
|visibleName|Офиуры, голотурии и&nbsp;морские лилии|
|table of contents thumb|text_11_2.jpg|
|ссылка на материал|./environment/PDF/11-Иглокожие-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,3 Мб|
|ссылка на материал|./environment/PDF_2/11-Иглокожие-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|132 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/12. Позвоночные. Рыбы/|
!!!Описание
Мы&nbsp;переходим к&nbsp;позвоночным животным. Сначала обсудим, куда мы&nbsp;попали и&nbsp;с&nbsp;кем нам предстоит познакомиться. А&nbsp;затем поговорим о&nbsp;рыбах: что у&nbsp;них общего, чем они питаются, какую пользу приносят людям?
!gallery data
{"data":[
	["01-2 рыба.jpg",null,null,null],
	["01-3 рыба.jpg",null,null,null],
	["01-4 рыба.jpg",null,null,null],
	["02 хрящевая рыба.jpg",null,null,null],
	["03 акула.jpg",null,null,null],
	["04 акула зубы.jpg",null,"https://www.flickr.com/photos/slimeslayer/2477022372/in","slimeslayer"],
	["05 чешуя акулы.jpg",null,"https://www.livescience.com/18385-shark-skin-mini-whirlpools.html","George Lauder, Johannes Oeffner"],
	["06 скат.jpg",null,"https://commons.wikimedia.org/wiki/File:Torpedo_torpedo_corsica2.jpg","Roberto Pillon"],
	["08 толстолобик.jpg",null,"http://www.hlasek.com/aristichthys_nobilis1pl.html","lubomir hlasek"],
	["09 ёрш.jpg",null,"https://www.flickr.com/photos/127191993@N04/15746462188/","Jack Perks"],
	["10 щука.jpg",null,"https://commons.wikimedia.org/wiki/File:Esox_Lucius.JPG","Georg Mittenecker"],
	["11 окунь.jpg",null,"https://commons.wikimedia.org/wiki/File:PercheCommune.jpg","Dgp.martin"],
	["12 сом.jpg",null,"https://commons.wikimedia.org/wiki/File:Silurus_glanis_02.jpg","Dieter Florian"],
	["13 сельдь.jpg",null,"https://commons.wikimedia.org/wiki/File:Herringadultkils.jpg","Kils"],
	["14 треска.jpg",null,"https://www.flickr.com/photos/per-barbro/3835549393/","per-barbro"],
	["15 мы едим рыбу.jpg",null,"",""],
	["16 икра.jpg",null,"",""],
	["17-1 рыбий жир.jpg",null,"",""],
	["17-2 витамин Д.jpg",null,"",""],
	["18 рыба есть водоросли.jpg","Рыба ест водоросли","",""],
	["19 пруд в тине.jpg",null,"http://images.esosedi.org/tina_v_prudu/38899540/index.html#lat=47322388&lng=39777760&z=15&mt=1&v=1","EkRoshe"]
],
"options":{}}
!%/
|visibleName|Позвоночные. Рыбы|
|ссылка на контент шага|https://youtu.be/RoOglDlxnvw|
|тип шага|video|
|ссылка на контент шага|./environment/task_12-3/index.html|
|тип шага|task|
|visibleName|Польза рыб|
|ссылка на контент шага|./environment/JPG/text_12_1.jpg|
|тип шага|pager|
|visibleName|Позвоночные|
|table of contents thumb|text_12_1.jpg|
|ссылка на контент шага|./environment/JPG/text_12_2.jpg|
|тип шага|pager|
|visibleName|Рыбы|
|table of contents thumb|text_12_2.jpg|
|ссылка на материал|./environment/PDF/12-Позвоночные_Рыбы-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|2,3 Мб|
|ссылка на материал|./environment/PDF_2/12-Позвоночные_Рыбы-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|116 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/13. Земноводные/|
!!!Описание
От&nbsp;рыб мы&nbsp;переходим к&nbsp;земноводным&nbsp;&mdash; родственника лягушки. Давайте разберёмся, удобно&nbsp;ли это: жить и&nbsp;на&nbsp;суше, и&nbsp;в&nbsp;воде?
!%//%
!gallery data
{"data":[
	["01 лягушка.jpg",null,null,null],
	["02 лягушка в воде и на суше.jpg",null,null,null],
	["03-1 головастик.jpg",null,null,null],
	["03-2 головастик.jpg",null,"https://www.flickr.com/photos/21886313@N00/6203550945","Chris Hall"],
	["04-1 икра в воде.jpg",null,"",""],
	["04-2 головастики в воде.jpg",null,"",""],
	["05 лёгкие.jpg",null,"",""],
	["06 лягушка.jpg",null,"https://en.wikipedia.org/wiki/File:Rana_esculenta_on_Nymphaea_edit.JPG","Grand-Duc, Niabot"],
	["07-1 жаба.jpg",null,"",""],
	["07-2 жаба.jpg",null,"https://www.flickr.com/photos/pecosvalleydiamond/8484866658/in/","Pecos Valley Diamond"],
	["08 жаба со слизнем.jpg",null,"https://www.flickr.com/photos/36837931@N04/18754297615","Bored Koi"],
	["09-1 жаба в бугорках.jpg",null,"https://www.flickr.com/photos/wayuu/5617691066/in/","Ratatusk"],
	["09-2 жаба в бугорках.jpg",null,"https://www.flickr.com/photos/aldovanzeeland/6012774682/in","A. v. Z."],
	["10-1 домик для жабы.jpg",null,"",""],
	["10-2 домик для жабы.jpg",null,"https://www.flickr.com/photos/enchanticals/5591089721/","Enchanticals ~I'm Coming Back"],
	["11 тритон.jpg",null,"https://www.flickr.com/photos/folgeschaden/7408931664/in","Heiko Wayne"],
	["12-1 саламандра.jpg",null,"https://www.flickr.com/photos/alcedowildlifecom/14687754721/in","Boris Belchev"],
	["12-2 саламандра.jpg",null,"https://www.flickr.com/photos/94125618@N03/11543472393/in","Lucas Gutiérrez Jiménez"],
	["12-3 саламандра.jpg",null,"https://www.flickr.com/photos/54349954@N05/5119802963/in","nocko10"],
	["13 саламандра.jpg",null,null,null],
	["14 ящерица.jpg",null,null,null]
],
"options":{}}
!%/
|visibleName|Земноводные|
|ссылка на контент шага|https://youtu.be/j3EMDzZph7Q|
|тип шага|video|
|visibleName|Накорми лягушку|
|ссылка на контент шага|./environment/task_13-1/index.html|
|тип шага|task|
|visibleName|Земноводные|
|ссылка на контент шага|./environment/task_13-3/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_13_1.jpg|
|тип шага|pager|
|visibleName|Кто такие земноводные|
|table of contents thumb|text_13_1.jpg|
|ссылка на контент шага|./environment/JPG/text_13_2.jpg|
|тип шага|pager|
|visibleName|Разнообразие земноводных|
|table of contents thumb|text_13_2.jpg|
|ссылка на материал|./environment/PDF/13-Земноводные-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,2 Мб|
|ссылка на материал|./environment/PDF_2/13-Земноводные-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|140 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/14. Пресмыкающиеся/|
!!!Описание
Пресмыкающиеся&nbsp;&mdash; это родственники ящерицы. Правда, на&nbsp;вид они мало похожи друг на&nbsp;друга. У&nbsp;одних совсем нет ног. У&nbsp;других кости растут не&nbsp;только внутри, но&nbsp;и&nbsp;снаружи тела. А&nbsp;третьи умеют менять свой цвет, когда захотят.
!%//%
!gallery data
{"data":[
	["01 ящерица.jpg",null,null,null],
	["02 яйца.jpg",null,null,null],
	["03 яйцо с детенышем.jpg",null,null,null],
	["04-1 прыткая ящерица.jpg",null,"https://www.flickr.com/photos/55112887@N04/7902832766/in","Marian Dragiev"],
	["04-2 прыткая ящерица.jpg",null,"https://www.flickr.com/photos/cobby31/14203219811/in","paul"],
	["05 агама.jpg",null,"https://www.flickr.com/photos/ivl_wildlife_photography/17905470925/in","Ingeborg van Leeuwen"],
	["06 круглоголовка.jpg",null,"https://commons.wikimedia.org/wiki/File:Phrynocephalus_mystaceus.jpg","Antoshin Konstantin"],
	["07 геккон.jpg",null,"https://www.flickr.com/photos/oceanearth/4851832478/in","coastalcreature"],
	["08-1 хамелеон.jpg",null,"",""],
	["08-2 хамелеон.jpg",null,"",""],
	["09-1 хамелеон.jpg",null,"https://www.flickr.com/photos/mshehan/6993118879/in","Michael Shehan Obeysekera"],
	["09-2 хамелеон.jpg",null,"https://www.flickr.com/photos/robert-kryszat/9244604255/in/","SofteisBoy"],
	["10-1 змея.jpg",null,"https://www.flickr.com/photos/bobbybinguis/2717780111/in","photoluver1"],
	["10-2 змея.jpg",null,"https://www.flickr.com/photos/7782955@N02/3428423997/in","Matt Mercier"],
	["11-1 гадюка.jpg",null,"https://www.flickr.com/photos/partystalker/8700549637/in","Paul van Oudheusden"],
	["11-2 гадюка.jpg",null,"https://www.flickr.com/photos/31371458@N06/2961483158/in/","Greg"],
	["12 змеиный яд.jpg",null,"",""],
	["13-1 крокодил.jpg",null,"",""],
	["13-2 крокодил.jpg",null,"https://www.flickr.com/photos/laurentis/2077729327/in/","laurent KB"],
	["14 ботинки из кожи крокодила.jpg",null,"",""],
	["15 черепаха.jpg",null,"",""],
	["16 наземная черепаха.jpg",null,"https://www.flickr.com/photos/23682965@N00/4676286911/in/","Curtis Brandt"],
	["17-1 черепаха водная.jpg",null,"https://www.flickr.com/photos/matt9122/9578211470/in/","Matt Heath"],
	["17-2 черепаха морская.jpg",null,"https://www.flickr.com/photos/zzathras777/5591862993/in","david reid"],
	["18 гребень из панциря церепахи copy.jpg","Гребень из панциря черепахи","",""],
	["19 панцирь.jpg",null,"https://www.flickr.com/photos/tim_s_g/14026149260/in","Timothy George"]
],
"options":{}}
!%/
|visibleName|Пресмыкающиеся|
|ссылка на контент шага|https://youtu.be/sdV9i8z4eKo|
|тип шага|video|
|ссылка на контент шага|./environment/task_14-1/index.html|
|visibleName|Пресмыкающиеся|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_14_1.jpg|
|тип шага|pager|
|visibleName|Ящерицы, крокодилы и&nbsp;змеи|
|table of contents thumb|text_14_1.jpg|
|ссылка на контент шага|./environment/JPG/text_14_2.jpg|
|тип шага|pager|
|visibleName|Хамелеоны и&nbsp;черепахи|
|table of contents thumb|text_14_2.jpg|
|ссылка на материал|./environment/PDF/14-Пресмыкающиеся-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|720 Кб|
|ссылка на материал|./environment/PDF_2/14-Пресмыкающиеся-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|126 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/15. Птицы/|
!!!Описание
На&nbsp;этом уроке мы&nbsp;обсудим, зачем утке плоский клюв, а&nbsp;павлину&nbsp;&mdash; разноцветный хвост, и&nbsp;почему длинные ласточкины крылья не&nbsp;подойдут воробью. А&nbsp;ещё поговорим о&nbsp;жизни перелётных птиц и&nbsp;о&nbsp;пользе, которую они приносят человеку.
!%//%
!gallery data
{"data":[
	["01-1 гнездо яйца.jpg",null,null,null],
	["01-2 яйцо пресмыкающегося.jpg",null,null,null],
	["02 клюв.jpg",null,null,null],
	["02-2 клюв черепахи.jpg",null,null,null],
	["03 перо.jpg",null,null,null],
	["04-1 воробей.jpg",null,null,null],
	["04-2 воробей.jpg",null,"https://www.flickr.com/photos/ronatka/16117777461/in","Natalia Romanenko"],
	["05 зяблик.jpg",null,"https://www.flickr.com/photos/96601035@N07/16774217323/in/","Сашкин Сад"],
	["06 трясогузка.jpg",null,"https://www.flickr.com/photos/anatoly201011/7091132949/in/","Anatoly haritonov"],
	["07-1 чиж.jpg",null,"https://www.flickr.com/photos/inga_b/8549031287/in","inga_art"],
	["07-2.jpg",null,"",""],
	["08-1 синица.jpg",null,"",""],
	["08-2 синица.jpg",null,"https://www.flickr.com/photos/96601035@N07/13897930413/in","Сашкин Сад"],
	["09 соловей.jpg",null,"",""],
	["10 дрозд и воробей.jpg",null,"https://www.flickr.com/photos/philwinter/19371335554","Phil Winter"],
	["11 ворон.jpg",null,"https://www.flickr.com/photos/122462638@N08/16071963837/in","Squ ier"],
	["11 дрозд.jpg",null,"https://www.flickr.com/photos/minoltoved/17147652842/","minoltoved"],
	["12 галка.jpg",null,"https://www.flickr.com/photos/steinarnejensen/7590037750/in","Stein Arne Jensen"],
	["13 грач.jpg",null,"https://www.flickr.com/photos/moonraker2012/16537435046/in","Pam"],
	["14-1 ворона.jpg",null,"https://www.flickr.com/photos/kavas/17103039790/in","hkavas"],
	["14-2 ворона.jpg",null,"",""],
	["15 орёл.jpg",null,"",""],
	["16-1 сова.jpg",null,"",""],
	["16-2 сова.jpg",null,"https://www.flickr.com/photos/awardphotographs/14578330618/in","neil ward"],
	["17 сыч.jpg",null,"https://www.flickr.com/photos/donbaloglu/4733494525/in","Volkan Donbaloglu"],
	["18 филин.jpg",null,"https://www.flickr.com/photos/59678053@N08/11979730296/in","Glenn.B"],
	["19 чайка.jpg",null,"",""],
	["20 утка.jpg",null,"https://www.flickr.com/photos/tim_a/2529058627/in","Tim Archibald"],
	["21-1 гусь.jpg",null,"",""],
	["21-2 гусь.jpg",null,"https://www.flickr.com/photos/8736453@N02/6350642535/in","Croydon Nikon User"],
	["22 лебедь.jpg",null,"https://www.flickr.com/photos/shannon-s/13760957445/in","Shannon-S"],
	["23 плоский утиный клюв.jpg",null,"https://www.flickr.com/photos/taras_tsyurka/6148645901/in","Taras Tsyurka"],
	["24-1 журавль.jpg",null,"",""],
	["24-2 журавль.jpg",null,"https://www.flickr.com/photos/107784905@N04/10727994654/in","Patrick MONNEY"],
	["25-1 страус.jpg",null,"",""],
	["25-2 страус.jpg",null,"https://www.flickr.com/photos/paulinemarcus/8524963453/in","Pauline Pham"],
	["26 пингвин.jpg",null,"",""],
	["27-1 ласточка.jpg",null,"https://www.flickr.com/photos/philwinter/27843703272","Phil Winter"],
	["27-2 ласточка.jpg",null,"",""],
	["28 стриж.jpg",null,"https://www.flickr.com/photos/63021221@N05/26540549604/","dmore10"],
	["29 широкие крылья.jpg",null,"https://www.flickr.com/photos/bits_n_bobs/8462511393/","Jamie"],
	["30 крылья ласточки.jpg",null,"https://www.flickr.com/photos/51013318@N06/7130953507/in","Mandy West"],
	["31 крылья воробья и ласточки.jpg",null,"",""],
	["32 ласточка в городе.jpg",null,"https://www.flickr.com/photos/skavak/4946253066/in","Stamos Kavakakis"],
	["33 курица.jpg",null,"",""],
	["34-1 павлин.jpg",null,"https://www.flickr.com/photos/92325053@N02/13756176824/in","Ballet Queen2013"],
	["34-2 павлин.jpg",null,"",""],
	["34-3 пава.jpg",null,"",""],
	["35 рябчик.jpg",null,"https://www.flickr.com/photos/tsunomi/5924879298/in","kkdemien"],
	["36 фазан.jpg",null,"https://www.flickr.com/photos/aljones27/9193687965/in/","Al"],
	["37 перепел.jpg",null,"https://www.flickr.com/photos/107784905@N04/16256173280/in/","Patrick MONNEY"],
	["38 глухарь.jpg",null,"https://www.flickr.com/photos/73017999@N05/6858087951/in/","Jamie MacArthur"],
	["39 тетерев.jpg",null,"https://www.flickr.com/photos/water_rail/6895445968/in","Mark Hope"],
	["40 перелётные птицы.jpg",null,null,null]
],
"options":{}}
!%/
|ссылка на контент шага|./environment/task_15-1/index.html|
|тип шага|task|
|visibleName|Признаки птиц|
|visibleName|Птицы|
|ссылка на контент шага|https://youtu.be/uNHvDAFhXVw|
|тип шага|video|
|ссылка на контент шага|./environment/task_15-7/index.html|
|тип шага|task|
|visibleName|Воробей и&nbsp;его родственники|
|ссылка на контент шага|./environment/JPG/text_15_1.jpg|
|тип шага|pager|
|visibleName|Признаки птиц|
|table of contents thumb|text_15_1.jpg|
|ссылка на контент шага|./environment/JPG/text_15_2.jpg|
|тип шага|pager|
|visibleName|Родственники воробьёв и&nbsp;кур|
|table of contents thumb|text_15_2.jpg|
|ссылка на контент шага|./environment/JPG/text_15_3.jpg|
|тип шага|pager|
|visibleName|Хищные и&nbsp;быстрые|
|table of contents thumb|text_15_3.jpg|
|ссылка на контент шага|./environment/JPG/text_15_4.jpg|
|тип шага|pager|
|visibleName|Птицы, связанные с&nbsp;водой|
|table of contents thumb|text_15_4.jpg|
|ссылка на материал|./environment/PDF/15-Птицы-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|2,4 Мб|
|ссылка на материал|./environment/PDF_2/15-Птицы-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|69 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/16. Млекопитающие, часть 1/|
!!!Описание
Мы&nbsp;переходим к&nbsp;зверям, или млекопитающим. Первый урок по&nbsp;этой теме посвящён родственникам мыши&nbsp;&mdash; грызунам, а&nbsp;ещё тем, кого иногда с&nbsp;грызунами путают. Мы&nbsp;расскажем, чем зайцы отличаются от&nbsp;кроликов, зачем бобр грызёт деревья и&nbsp;стоит&nbsp;ли заводить дома ежа.
!gallery data
{"data":[
	["01 млекопитающие.jpg",null,null,null],
	["02 шерсть.jpg",null,null,null],
	["03 мышь.jpg",null,null,null],
	["04-1 хомяк.jpg",null,null,null],
	["04-2 хомяк.jpg",null,"https://www.flickr.com/photos/karinology/5594467755/","Karin"],
	["05 морская свинка.jpg",null,"https://www.flickr.com/photos/xris74/5873720981","Christoph Pfeilstücker"],
	["06 белка.jpg",null,"https://www.flickr.com/photos/thartz00/4847486629/","likeaduck"],
	["07-1 бобр.jpg",null,"",""],
	["07-2 бобр.jpg",null,"https://www.flickr.com/photos/bryndavies/3879874852/","Bryn Davies"],
	["08 бобровая нора.jpg",null,"https://www.flickr.com/photos/54496854@N08/15357678718/","mari subb"],
	["09 хатка бобра.jpg",null,null,null],
	["10-1 бобровая плотина.jpg",null,"https://www.flickr.com/photos/kirilka/8716344205/","Eu Kos"],
	["10-2 бобровая плотина.jpg",null,"https://www.flickr.com/photos/eukos/5657190608/","kirilka"],
	["11-1 летучая мышь.jpg",null,null,null],
	["11-2 летучая мышь.jpg",null,"https://www.flickr.com/photos/37577693@N04/3934209326/","Michael Pennay"],
	["11-3 летучая мышь.jpg",null,"https://www.flickr.com/photos/erick-rebaya17/9686092675/","Erick Rincones"],
	["11-4 летучая мышь.jpg",null,"https://www.flickr.com/photos/133921734@N07/20821477275/","Christine Marshall"],
	["12 рукокрылое с фруктом.jpg",null,null,null],
	["13 летучая мышь — вампир.jpg",null,"https://www.flickr.com/photos/chasingtimestudio/5021556965","david"],
	["14-1 заяц.jpg",null,null,null],
	["14-2 заяц.jpg",null,"https://www.flickr.com/photos/104435644@N07/17012349530/","Jacqueline Read"],
	["14-3 заяц.jpg",null,"https://www.flickr.com/photos/cbclove/4371004422/","cbclove"],
	["15 заячья еда — ветка.jpg",null,null,null],
	["16 морковка.jpg",null,null,null],
	["17 кролик.jpg",null,null,null],
	["18 заяц в лесу.jpg",null,null,null],
	["19 кролик на полянке.jpg",null,null,null],
	["20 ёж.jpg",null,null,null],
	["21-1 крот.jpg",null,null,null],
	["21-2 крот.jpg",null,"https://www.flickr.com/photos/16177003@N03/14473068825/","charlie.syme"],
	["22 лапы крота.jpg",null,"https://www.flickr.com/photos/38914118@N04/6809682638/","Nottinghamshire Wildlife Trust"]
],
"options":{}}
!%/
|visibleName|Млекопитающие, часть&nbsp;1|
|ссылка на контент шага|https://youtu.be/fbkhtGNQPFg|
|тип шага|video|
|ссылка на контент шага|./environment/task_16-1/index.html|
|тип шага|task|
|visibleName|Признаки птиц и&nbsp;зверей|
|ссылка на контент шага|./environment/task_16-3/index.html|
|тип шага|task|
|visibleName|Звери на&nbsp;обеде|
|ссылка на контент шага|./environment/JPG/text_16_1.jpg|
|тип шага|pager|
|visibleName|Признаки млекопитающих|
|table of contents thumb|text_16_1.jpg|
|ссылка на контент шага|./environment/JPG/text_16_2.jpg|
|тип шага|pager|
|visibleName|Грызуны|
|table of contents thumb|text_16_2.jpg|
|ссылка на контент шага|./environment/JPG/text_16_3.jpg|
|тип шага|pager|
|visibleName|Зайцы, кролики и&nbsp;летучие мыши|
|table of contents thumb|text_16_3.jpg|
|ссылка на материал|./environment/PDF/16-Млекопитающие_часть_1-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|792 Кб|
|ссылка на материал|./environment/PDF_2/16-Млекопитающие_часть_1-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|119 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/17. Млекопитающие, часть 2/|
!!!Описание
Чем хорошо ходить на&nbsp;цыпочках? Чем плохо быть самым большим? Как отрастить пять рук? Кто из&nbsp;зверей самый близкий родственник человека? Разбираемся с&nbsp;этими вопросами в&nbsp;последнем уроке о&nbsp;царстве животных.
!Дополнительно об уроке

!gallery data
{"data":[
	["01-0 стопа человека.jpg",null,null,null],
	["01-1 стопа.jpg",null,null,null],
	["01-2 стопа.jpg",null,null,null],
	["01-3 стопа.jpg",null,null,null],
	["01-4 стопа.jpg",null,null,null],
	["01-5 стопа.jpg",null,null,null],
	["01-6 стопа.jpg",null,null,null],
	["01-7 копыто.jpg",null,null,null],
	["02 раздвоенное и цельное копыто.jpg",null,null,null],
	["03-1 подкова.jpg",null,null,null],
	["03-2 раздвоенная подкова.jpg",null,null,null],
	["04 лошадь.jpg",null,"https://www.flickr.com/photos/anotherpintplease/4619787856/in","Mike"],
	["05 зебра.jpg",null,"https://www.flickr.com/photos/97959197@N08/14581785461/in","Alexey Goosev"],
	["06 осёл.jpg",null,"https://www.flickr.com/photos/lhoon/4843790350/in/","LHOON"],
	["07-1 носорог.jpg",null,"https://www.flickr.com/photos/76627744@N08/15054659032/in/","Sandsteiner"],
	["07-2 носорог.jpg",null,"https://www.flickr.com/photos/27566485@N02/26238917286/in/","RAHUL SHARMA"],
	["08-1 олень.jpg",null,"",""],
	["08-2 олень.jpg",null,"https://www.flickr.com/photos/sulkyblue/8106359142/in","Lorna Robinson"],
	["09 лось.jpg",null,"https://www.flickr.com/photos/canopic/3008803928/in/","canopic"],
	["10-1 бегемот.jpg",null,"",""],
	["10-2 бегемот.jpg",null,"https://www.flickr.com/photos/cmlburnett/2416465939/in","Colin Burnett"],
	["11-1 свинья.jpg",null,"",""],
	["11-2 свинья.jpg",null,"https://www.flickr.com/photos/verifex/2974222464/in","verifex"],
	["12-1 жираф.jpg",null,"",""],
	["12-2 жираф.jpg",null,"https://www.flickr.com/photos/55454198@N00/15266770622/in","Kendra"],
	["13 кошка.jpg",null,"",""],
	["14 собака.jpg",null,"",""],
	["15 тигр.jpg",null,"https://www.flickr.com/photos/129200875@N05/17265759046/in/","Robert Campbell"],
	["16 лев.jpg",null,"https://www.flickr.com/photos/9437621@N05/15938084751/in/","picqero"],
	["17 леопард.jpg",null,"https://www.flickr.com/photos/119073906@N08/12852606724/in","Gunnar Nilsson"],
	["18 гепард.jpg",null,"https://www.flickr.com/photos/87423022@N08/8657495628/in","Roy Lee"],
	["19 волк.jpg",null,"https://www.flickr.com/photos/81710321@N08/9148112081/in/","Christina Catlin-Groves"],
	["20 лиса.jpg",null,"https://www.flickr.com/photos/7482089@N04/5973756387/in","Kevin Agar"],
	["21 шакал.jpg",null,"https://www.flickr.com/photos/zuliebear/6078828920/in","Dianne Erskine-Hellrigel"],
	["22 бурый медведь.jpg",null,"https://www.flickr.com/photos/tomblandford/8412754546/","Tom Blandford"],
	["23 белый медведь.jpg",null,"https://www.flickr.com/photos/andy999/6109954125/","Andy Silver"],
	["24 гиена.jpg",null,"https://www.flickr.com/photos/125118261@N05/14662196162/in","Lily Johnson-Ulrich"],
	["25 куница.jpg",null,"https://www.flickr.com/photos/canon_chas/9058263334/in","Chas Moonie"],
	["26 горностай.jpg",null,"https://www.flickr.com/photos/40798812@N03/4629477653/in","Moira Fenner"],
	["27 енот.jpg",null,"https://www.flickr.com/photos/efraserc/5695232644/in","Eve Fraser-Corp"],
	["28 морж.jpg",null,"https://www.flickr.com/photos/just_absurd/5182714048/in","just_absurd"],
	["29 тюлень под водой.jpg",null,"https://www.flickr.com/photos/21563921@N03/37914785654/","Jo Ward"],
	["30 синий кит.jpg",null,"",""],
	["31 дельфин.jpg",null,"",""],
	["32 косатка.jpg",null,"https://www.flickr.com/photos/toryjk/4684188254/in","Tory Kallman"],
	["33 белуха.jpg",null,"https://www.flickr.com/photos/modatogms/10534212046/","Modato Gms"],
	["34 синий кит под водой.jpg",null,"https://www.flickr.com/photos/tony_brown/8057860059/","Tony Brown"],
	["35-1 слон.jpg",null,"",""],
	["35-2 слоны.jpg",null,"https://www.flickr.com/photos/zeeyolqpictures/25792173096/","Yoann JEZEQUEL"],
	["36 горилла.jpg",null,"https://www.flickr.com/photos/13216860@N00/519528983/","Fiona Potts"],
	["37 орангутан.jpg",null,"https://www.flickr.com/photos/29576042@N02/4968587492/","tomh260"],
	["38 шимпанзе.jpg",null,"https://www.flickr.com/photos/jonathanjmackintosh/113851445/","Jonathan J Mackintosh"]
],
"options":{}}
!%/
|visibleName|Млекопитающие, часть&nbsp;2|
|ссылка на контент шага|https://youtu.be/3EfGvwuF77o|
|тип шага|video|
|visibleName|Рыбы и&nbsp;китообразные|
|ссылка на контент шага|./environment/task_17-4/index.html|
|тип шага|task|
|visibleName|Млекопитающие|
|ссылка на контент шага|./environment/task_17-5/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_17_1.jpg|
|тип шага|pager|
|visibleName|Копытные|
|table of contents thumb|text_17_1.jpg|
|ссылка на контент шага|./environment/JPG/text_17_2.jpg|
|тип шага|pager|
|visibleName|Хищные и&nbsp;китообразные|
|table of contents thumb|text_17_2.jpg|
|ссылка на материал|./environment/PDF/17-Млекопитающие_часть_2-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|961 Кб|
|ссылка на материал|./environment/PDF_2/17-Млекопитающие_часть_2-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|153 Кб|
<<lessonAdminPanel>>/%
|visibleName|18. Знакомство с&nbsp;растениями|
|galleryFolder|environment/galleries/18. Знакомство с растениями/|
!!!Описание
Мы&nbsp;переходим в&nbsp;новое царство&nbsp;&mdash; к&nbsp;растениям! Давайте обсудим, чем жители этого царства отличаются от&nbsp;остальных.
!%//%
!gallery data
{"data":[
	["01 растения растут всю жизнь.jpg"],
	["02 клубника рост.jpg"],
	["03 клубника листья отмирают.jpg"],
	["04 растения не двигаются.jpg"],
	["05 схема фотосинтеза.jpg"],
	["06 цепь питания.jpg"]
],
"options":{}}
!%/
|visibleName|Знакомство с&nbsp;растениями|
|ссылка на контент шага|https://youtu.be/mwOfhPyAjmA|
|тип шага|video|
|visibleName|Признаки растений|
|ссылка на контент шага|./environment/task_18-1/index.html|
|тип шага|task|
|visibleName|Фотосинтез|
|ссылка на контент шага|./environment/task_18-2/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_18_1.jpg|
|тип шага|pager|
|visibleName|Признаки растений|
|table of contents thumb|text_18_1.jpg|
|ссылка на контент шага|./environment/JPG/text_18_2.jpg|
|тип шага|pager|
|visibleName|Фотосинтез|
|table of contents thumb|text_18_2.jpg|
|ссылка на материал|./environment/PDF/18-Знакомство_с_растениями-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|740 Кб|
|ссылка на материал|./environment/PDF_2/18-Знакомство_с_растениями-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|231 Кб|
|visibleName|19. Строение растений|
|galleryFolder|environment/galleries/19. Строение растений/|
<<lessonAdminPanel>>/%
!!!Описание
Разбираемся, из&nbsp;каких основных частей состоят растения и&nbsp;зачем им&nbsp;эти части нужны.
!%//%
!gallery data
{"data":[
	["01 условное растение.jpg",null,null,null],
	["02 корни.jpg",null,null,null],
	["03 корни от веток (баньян).jpg",null,"https://www.flickr.com/photos/125156797@N04/14940770851/in","Karthikeyan Perumal"],
	["04 корни-зацепки (плющ).jpg",null,"https://www.flickr.com/photos/khnumhotep/13645804004/in","Khnum-hotep"],
	["05 соли.jpg",null,null,null],
	["07 стебель-лифт поднимает воду.jpg",null,null,null],
	["08 стебель спускает питательные вещества.jpg",null,null,null],
	["09 жизненные формы.jpg",null,null,null],
	["10 цветок и плод.jpg",null,null,null],
	["11 плод.jpg",null,null,null],
	["12 плод с семенами-колясочками.jpg",null,null,null],
	["13-1 нецветковое растение.jpg",null,null,null],
	["13-2 нецветковое растение.jpg",null,null,null]
],
"options":{}}
!%/
|visibleName|Строение растений|
|ссылка на контент шага|https://youtu.be/0nh48GjHPFw|
|тип шага|video|
|ссылка на контент шага|./environment/task_19-1/index.html|
|тип шага|task|
|visibleName|Строение растений|
|ссылка на контент шага|./environment/task_19-2/index.html|
|тип шага|task|
|visibleName|Строение растений|
|ссылка на контент шага|./environment/task_19-3/index.html|
|visibleName|Жизненные формы растений|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_19_1.jpg|
|тип шага|pager|
|visibleName|Строение растений|
|table of contents thumb|text_19_1.jpg|
|ссылка на контент шага|./environment/JPG/text_19_2.jpg|
|тип шага|pager|
|visibleName|Жизненные формы растений|
|table of contents thumb|text_19_2.jpg|
|ссылка на материал|./environment/PDF/19-Строение_растений-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|541 Кб|
|ссылка на материал|./environment/PDF_2/19-Строение_растений-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|148 Кб|
|visibleName|Конспект для ученика|
|ссылка на материал|./environment/PDF/01-Знакомство_с_предметом-Конспект.pdf|
|занимает памяти|779 Кб|
|ссылка на материал|./environment/PDF_2/01-Знакомство_с_предметом-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|64 Кб|
<<lessonAdminPanel>>/%
|visibleName|2. Как отличить живое от неживого|
|galleryFolder|environment/galleries/02. Чем живое отличается от неживого/|
!!!Описание
Мы&nbsp;разделили всю природу на&nbsp;мир живого и&nbsp;мир неживого. Но&nbsp;если по&nbsp;виду нам неясно, что перед нами: живой организм или неживой предмет,&nbsp;&mdash; как быть? Есть четыре главных признака, которыми обладает всё живое.
!Дополнительно об уроке

!gallery data
{"data":[
	["01 человек на велосипеде.jpg","","",""],
	["02 живое размножается — мышь.jpg","","",""],
	["03 живое размножается — дерево.jpg","","",""],
	["04 неживое не размножается.jpg","","",""],
	["05 живое растет — мышь.jpg","","",""],
	["06 живое растет — дерево.jpg","","",""],
	["07 живое питается — мышь.jpg","","",""],
	["08 живое питается — дерево.jpg","","",""],
	["09 неживое не питается.jpg","","",""],
	["10 ученый увидел клетки в микроскоп.jpg","","",""],
	["11 живое состоит из клеток.jpg","","",""],
	["12 дом из кирпичей.jpg","","",""],
	["13 клетки кожицы лука.jpg","","https://www.flickr.com/photos/107963674@N07/14730447927/","Macroscopic Solutions"],
	["14 клетки побега растения.jpg","","https://www.flickr.com/photos/blueridgekitties/4425262405/","BlueRidgeKitties"],
	["15 клетки крови лягушки.jpg","","https://www.flickr.com/photos/havovubu/7623398360/","Wayne Large"],
	["16 клетки сердца человека.jpg","","https://www.flickr.com/photos/148881376@N06/26634564147/","Christian Zuppinger"],
	["17 клетки карандаша.jpg","","",""],
	["18 мёртвый пень.jpg","","",""],
	["19 костёр как будто питается.jpg","","",""],
	["20 костёр как будто растет.jpg","","",""],
	["21 костёр как будто размножается.jpg","","",""],
	["22 костёр не состоит из клеток.jpg","","",""]
],
"options":{}}
!%/
|ссылка на контент шага|https://youtu.be/f24d6Qi8GbQ|
|тип шага|video|
|visibleName|Чем живое отличается от&nbsp;неживого|
|ссылка на контент шага|./environment/task_02-1/index.html|
|тип шага|task|
|visibleName|Признаки живого|
|visibleName|Живое, неживое и&nbsp;мёртвое|
|ссылка на контент шага|./environment/task_02-3/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_02_1.jpg|
|тип шага|pager|
|visibleName|Признаки живого|
|table of contents thumb|text_02_1.jpg|
|ссылка на контент шага|./environment/JPG/text_02_2.jpg|
|тип шага|pager|
|visibleName|Как пользоваться признаками живого|
|table of contents thumb|text_02_2.jpg|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/20. Водоросли и мхи/|
!!!Описание
Первые растения, с&nbsp;которыми мы&nbsp;познакомимся ближе,&nbsp;&mdash; это водоросли и&nbsp;мхи. Вы&nbsp;узнаете, чем полезны людям мхи, что вкусного можно сделать из&nbsp;водорослей и&nbsp;относятся&nbsp;ли к&nbsp;ним кувшинки.
!%//%
!gallery data
{"data":[
	["01-1 водоросли.jpg",null,null,null],
	["01-2 водоросли и русалка.jpg",null,null,null],
	["02-1 кувшинки не водоросли.jpg",null,"https://www.flickr.com/photos/jamesjardine/12115671365/in","James Jardine"],
	["02-2 кувшинки не водоросли.jpg",null,"https://www.flickr.com/photos/jarbasmattos/9185156714/in/","jarbas"],
	["02-4 кувшинка с корнями.jpg",null,"",""],
	["03 спирогира.jpg",null,"https://commons.wikimedia.org/wiki/File:Spyrogyra-bgiu.jpg","Bogdan"],
	["04-1 улотрикс.jpg",null,"www.shrimp-tank.com","ShrimpTank"],
	["04-2 улотрикс.jpg",null,"https://www.flickr.com/photos/78545007@N02/6885980624/in","Pefiradfi"],
	["05 водоросль-мочалка.jpg",null,"https://www.flickr.com/photos/99248541@N00/8564554556/in","Sushi_Girl1995"],
	["06 ламинария.jpg",null,"",""],
	["07-1 фукус.jpg",null,"https://www.flickr.com/photos/39968898@N02/3678623563/in","Irish Marine Life"],
	["07-2 фукус.jpg",null,"https://www.flickr.com/photos/bathyporeia/15896377177/","bathyporeia"],
	["08 морская капуста.jpg",null,"",""],
	["09 агар-агар.jpg",null,"",""],
	["10 сладости с агар-агаром.jpg",null,"",""],
	["11-1 мох маршанция.jpg",null,"",""],
	["11-2 мох маршанция.jpg",null,"https://www.flickr.com/photos/solangebelon/7985253466/in","Solange B"],
	["12 мох кукушкин лён.jpg",null,"https://www.flickr.com/photos/stephenbuchan/7160985922/in/","Stephen Buchan"],
	["13 мох ритидиадельф.jpg",null,"https://www.flickr.com/photos/natureseye/8511279200/in/","duckinwales"],
	["14 мох с как будто цветками.jpg",null,"https://www.flickr.com/photos/bryopix_flickr/6558771385/","Dick Haaksma"],
	["15 русалка на моховом камне.jpg",null,"",""],
	["16-1 сфагнум.jpg",null,"",""],
	["16-2 сфагнум.jpg",null,"https://www.flickr.com/photos/sjorgs/7710938294/in","sjorgs"],
	["17 сфагнумом затыкают щели.jpg",null,"",""],
	["18 моховое болото.jpg",null,"",""],
	["19-1 торф.jpg",null,"https://www.flickr.com/photos/32692888@N02/18814479981/","John"],
	["19-2 торф.jpg",null,"https://www.flickr.com/photos/kabaert/4279082709/","Kathleen Baert"],
	["20-1 болото.jpg",null,"https://www.flickr.com/photos/jessaerons/27085949040/in/","Pavel Starikov"],
	["20-2 болото.jpg",null,"https://www.flickr.com/photos/asaratoga/7402271898/in","Valery Petrov"],
	["21 торфяной пожар.jpg",null,null,null]
],
"options":{}}
!%/
|visibleName|Водоросли и&nbsp;мхи|
|ссылка на контент шага|https://youtu.be/LSoOVl0Kt4w|
|тип шага|video|
|ссылка на контент шага|./environment/task_20-2/index.html|
|тип шага|task|
|visibleName|Водоросли и&nbsp;мхи|
|ссылка на контент шага|./environment/JPG/text_20_1.jpg|
|тип шага|pager|
|visibleName|Водоросли|
|table of contents thumb|text_20_1.jpg|
|ссылка на контент шага|./environment/JPG/text_20_2.jpg|
|тип шага|pager|
|visibleName|Мхи|
|table of contents thumb|text_20_2.jpg|
|ссылка на материал|./environment/PDF/20-Водоросли_и_мхи-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|994 Кб|
|ссылка на материал|./environment/PDF_2/20-Водоросли_и_мхи-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|165 Кб|
|visibleName||
|galleryFolder|environment/galleries/21. Папоротники и хвойные/|
<<lessonAdminPanel>>/%
!!!Описание
Сколько человек может поместиться на&nbsp;пне? Что необычного в&nbsp;листьях папоротника? Какое растение похоже на&nbsp;чей-то хвостик (и&nbsp;даже называется похоже)? Отвечаем во&nbsp;второй части рассказа о&nbsp;нецветковых растениях.
!%//%
!gallery data
{"data":[
	["01 вайя папоротника.jpg",null,null,null],
	["02 перо павлина.jpg",null,null,null],
	["03-1 папоротник.jpg",null,"https://www.flickr.com/photos/134108556@N06/22893554971/in","Daniil Drozdov"],
	["03-2 папоротник.jpg",null,"https://www.flickr.com/photos/jesperanza/8382863140/in/","Jessica Schmidt"],
	["03-3 папоротник.jpg",null,"https://www.flickr.com/photos/29689347@N06/5980456795/in","Kerry Naugle"],
	["04 вайя.jpg",null,"https://www.flickr.com/photos/a-herzog/18469232581/in","Stiller Beobachter"],
	["05 страусник.jpg",null,"https://www.flickr.com/photos/randijaa/26485287393/in","Randi J."],
	["06 щитовник.jpg",null,"https://commons.wikimedia.org/wiki/File:Dryopteris_cristata.jpeg","Kristian Peters"],
	["07 хвощ.jpg",null,"",""],
	["08 хвощи.jpg",null,"",""],
	["09 хвощ.jpg",null,"https://www.flickr.com/photos/ki/2891862109/in","--ki---"],
	["10 древовидный папоротник.jpg",null,"https://commons.wikimedia.org/wiki/File:Dicksonia_antarctica_in_Koishikawa_gardens.jpg","Daderot"],
	["11 каламит.jpg",null,"",""],
	["12 каламиты.jpg",null,"",""],
	["13 каменный уголь.jpg",null,"",""],
	["14 лесная сосна.jpg",null,"",""],
	["15 ель.jpg",null,"",""],
	["16 шишки и хвоя.jpg",null,"",""],
	["17 сибирская сосна.jpg",null,"https://www.flickr.com/photos/48592009@N03/22503447443/in/","igor parhomcik"],
	["18 лиственница.jpg",null,"https://www.flickr.com/photos/igorkart/24101765211/in","Igor Kartavykh"],
	["19 лиственница жёлтая.jpg",null,"https://www.flickr.com/photos/efenstor/5367467672/in/","Andrey Pivovarov"],
	["20 лиственница хвоинки.jpg",null,"https://www.flickr.com/photos/oliveshadow/14070984545/in","Ol'ga"],
	["21 кипарис.jpg",null,"https://www.flickr.com/photos/oninot/14766439386/in","Tonino De Rubeis"],
	["22 туя.jpg",null,"https://www.flickr.com/photos/qvesten/16597216738/in","qvesten"],
	["23-1 секвойя.jpg",null,"",""],
	["23-2 секвойя.jpg",null,"",""],
	["24 секвойя пень.jpg",null,"https://www.flickr.com/photos/maleny_steve/27661682234/","Serendigity"]
],
"options":{}}
!%/
|visibleName|Папоротники и&nbsp;хвойные|
|ссылка на контент шага|https://youtu.be/iLVLnXyMpvw|
|тип шага|video|
|visibleName|Нецветковые растения|
|ссылка на контент шага|./environment/task_21-1/index.html|
|тип шага|task|
|visibleName|Польза нецветковых растений|
|ссылка на контент шага|./environment/task_21-2/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_21_1.jpg|
|тип шага|pager|
|visibleName|Папоротники и&nbsp;хвощи|
|table of contents thumb|text_21_1.jpg|
|ссылка на контент шага|./environment/JPG/text_21_2.jpg|
|тип шага|pager|
|visibleName|Хвойные|
|table of contents thumb|text_21_2.jpg|
|ссылка на материал|./environment/PDF/21-Папоротники_и_хвойные-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,3 Мб|
|ссылка на материал|./environment/PDF_2/21-Папоротники_и_хвойные-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|238 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/22. Цветковые деревья и кустарники/|
!!!Описание
Мы&nbsp;обсудим, почему у&nbsp;одних деревьев цветки крупные и&nbsp;душистые, а&nbsp;у&nbsp;других еле заметные. И&nbsp;познакомимся с&nbsp;самыми частыми в&nbsp;наших краях деревьями и&nbsp;кустарниками.
!%//%
!gallery data
{"data":[
	["01 цветки яблони.jpg",null,"https://www.flickr.com/photos/sadownictwo/11827278574/","sadownictwo .com.pl"],
	["02 цветки груши.jpg",null,"https://www.flickr.com/photos/massimo-buccolieri/26146022132/in/","Massimo Buccolieri"],
	["03 цветки сливы.jpg",null,"https://www.flickr.com/photos/zgok/117092689/in/","zgok_cw"],
	["04 цветки вишни.jpg",null,"https://www.flickr.com/photos/ketch/4428608149/in/","Keiichi Suda"],
	["05 плоды яблони.jpg",null,"https://www.flickr.com/photos/giantmike13/9811194363/in","giantmike"],
	["06 плоды груши.jpg",null,"https://www.flickr.com/photos/tednmiki/22662194459/in","tednmiki"],
	["07 плоды сливы.jpg",null,"https://www.flickr.com/photos/baileysbigblog/7386276516/in","Pete Bailey"],
	["08 плоды вишни.jpg",null,"https://www.flickr.com/photos/elahe63/4805314201/in","Elahe Dastgheib"],
	["09 рябина.jpg",null,"https://www.flickr.com/photos/trgman/4629219052/","Jason"],
	["10-1 магнолия.jpg",null,"https://www.flickr.com/photos/88198496@N04/17143803359/","Frank"],
	["10-2 магнолия.jpg",null,"https://www.flickr.com/photos/lordv/17098145748/in","Brian Valentine"],
	["10-3 магнолия.jpg",null,"https://www.flickr.com/photos/workmana10/2585378166/in","Alisa"],
	["11 липа.jpg",null,"https://www.flickr.com/photos/canadiantreetours/5930550433/in","Baye Hunter"],
	["12 клён.jpg",null,"https://www.flickr.com/photos/7208148@N02/26301694065/","photopoésie"],
	["13 дуб.jpg",null,"https://www.flickr.com/photos/7208148@N02/16629993413/","photopoésie"],
	["14 ясень.jpg",null,"https://www.flickr.com/photos/bluebullet/8748001674/in","bluebullet"],
	["15 берёза.jpg",null,"https://www.flickr.com/photos/54496854@N08/26279533221/in","mari subb"],
	["16 соцветие берёзы.jpg",null,"",""],
	["17 шмели опыляют клевер.jpg",null,"",""],
	["18 ветер.jpg",null,"",""],
	["19-1 плоды дуба жёлуди.jpg",null,"https://www.flickr.com/photos/16155010@N04/9608951707/","Simon (celery) Marshall"],
	["19-2 жёлуди.jpg",null,"https://www.flickr.com/photos/edwbaker/3950265408/","Edward Baker"],
	["19-3 жёлуди.jpg",null,"",""],
	["20-1 плоды клёна.jpg",null,"https://www.flickr.com/photos/roddh/142105571/in","Rodd Halstead"],
	["20-2 плоды клёна.jpg",null,"https://www.flickr.com/photos/rbdal49/14262262809/in","rbdal (Rick Dalrymple)"],
	["21 плоды липы.jpg",null,"https://www.flickr.com/photos/steppeland/9555634997/","Steppeland"],
	["22-1 плоды ясеня.jpg",null,"https://www.flickr.com/photos/kewonflickr/6031978323/in","Kew on Flickr"],
	["22-2 плоды ясеня.jpg",null,"https://www.flickr.com/photos/pelayobotanica/16367164370/in","Javier Pelayo"],
	["23 плоды берёзы.jpg",null,"",""],
	["24 тополь.jpg",null,"",""],
	["25 светлая кора тополей.jpg",null,"https://www.flickr.com/photos/somewhatnorth/6339739426/","SomewhatNorth"],
	["26 кора других деревьев.jpg",null,"https://www.flickr.com/photos/c-l-english/8641576649/","Louise and Colin"],
	["27 тополя в городе.jpg",null,"",""],
	["28 осина.jpg",null,"https://www.flickr.com/photos/22873479@N08/5818225131/in/","Stefano Zerauschek"],
	["29-1 листья тополя.jpg",null,"https://www.flickr.com/photos/terrificphotos/5874091624/","Terri Roth"],
	["29-2 листья осины.jpg",null,"",""],
	["30 ствол осины.jpg",null,"https://www.flickr.com/photos/68282140@N04/22228676954/in","julia_HalleFotoFan"],
	["31-1 серёжки осины.jpg",null,"https://www.flickr.com/photos/7208148@N02/27552904020/in","photopoésie"],
	["31-2 серёжки осины.jpg",null,"https://www.flickr.com/photos/63054285@N02/7136781611/in","Maciej Gołąbek"],
	["32 ива дерево.jpg",null,"https://www.flickr.com/photos/12639178@N07/21551032153/in","naturgucker.de / enjoynature.net"],
	["33 ива кустарник.jpg",null,"https://www.flickr.com/photos/plant_diversity/5002370825/","Matt Lavin"],
	["34-1 шиповник.jpg",null,"https://www.flickr.com/photos/slicomir3/14372562711/in","tihoslic3"],
	["35 лесные орехи.jpg",null,"https://www.flickr.com/photos/49147273@N04/5302077492/in/","Robert Klips"],
	["36 лещина.jpg",null,"https://commons.wikimedia.org/wiki/File:Port_noisetier.JPG","Port noisetier"],
	["37 малина.jpg",null,"https://www.flickr.com/photos/sebastianrittau/15440873842/","Sebastian Rittau"],
	["38 крыжовник.jpg",null,"https://www.flickr.com/photos/42135059@N02/4744023729/","david schiller"],
	["39 черная смородина.jpg",null,"https://www.flickr.com/photos/ichie-jp/15134583830/","ichie"],
	["40 калина.jpg",null,"https://www.flickr.com/photos/serjio/1429200954/","Sergei Rogozhnikov"],
	["40-2 калина.jpg",null,"https://www.flickr.com/photos/12639178@N07/21337293794/","naturgucker.de / enjoynature.net"],
	["41 боярышник.jpg",null,"https://www.flickr.com/photos/mishej/36710037751/","John Mishefske"],
	["42 бересклет.jpg",null,"https://www.flickr.com/photos/ille43/8046374669/","Sylvi"],
	["43 жимолость лесная.jpg",null,"https://www.flickr.com/photos/pelayobotanica/15931750863/","Javier Pelayo"]
],
"options":{}}
!%/
|visibleName|Цветковые деревья и&nbsp;кустарники|
|ссылка на контент шага|https://youtu.be/ZqTcTxPLdSY|
|тип шага|video|
|ссылка на контент шага|./environment/task_22-1/index.html|
|тип шага|task|
|visibleName|Цветковые деревья и&nbsp;кустарники|
|ссылка на контент шага|./environment/task_22-3/|
|тип шага|task|
|visibleName|Чьи это цветки?|
|ссылка на контент шага|./environment/task_22-5/index.html|
|тип шага|task|
|visibleName|Опыление|
|ссылка на контент шага|./environment/JPG/text_22_1.jpg|
|тип шага|pager|
|visibleName|Цветковые деревья|
|table of contents thumb|text_22_1.jpg|
|ссылка на контент шага|./environment/JPG/text_22_2.jpg|
|тип шага|pager|
|visibleName|Цветковые кустарники|
|table of contents thumb|text_22_2.jpg|
|ссылка на материал|./environment/PDF/22-Цветковые_деревья_и_кустарники-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,4 Мб|
|ссылка на материал|./environment/PDF_2/22-Цветковые_деревья_и_кустарники-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|321 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/23. Цветковые травы/|
!!!Описание
Наше путешествие по&nbsp;царству растений заканчивается. Давайте напоследок заглянем к&nbsp;цветковым травянистым растениям и&nbsp;найдём среди них чемпионов: у&nbsp;кого из&nbsp;них самые крупные цветки? У&nbsp;кого самые незаметные? А&nbsp;кого люди больше всего ценят за&nbsp;красоту и&nbsp;аромат?
!%//%
!gallery data
{"data":[
	["01-1 цветок раффлезии.jpg",null,null,null],
	["01-2 цветок раффлезии.jpg",null,"https://www.flickr.com/photos/ukstairs/5640116044/","ukstairs"],
	["01-3 раффлезия.jpg",null,"https://www.flickr.com/photos/francesborg/154142427/in","Frances"],
	["01-4 раффлезия.jpg",null,"https://www.flickr.com/photos/29228406@N08/3158921289/in","oldbean2008"],
	["01-5 раффлезия.jpg",null,"https://www.flickr.com/photos/adronvet/5583120685/in","adronvet"],
	["02-1 рост раффлезии.jpg",null,"",""],
	["02-2 рост раффлезии.jpg",null,"",""],
	["02-3 рост раффлезии.jpg",null,"",""],
	["02-4 рост раффлезии.jpg",null,"",""],
	["02-5 рост раффлезии.jpg",null,"",""],
	["02-6 рост раффлезии.jpg",null,"",""],
	["03-1 кувшинка.jpg",null,"https://www.flickr.com/photos/jamesjardine/12115671365/in","James Jardine"],
	["03-2 кувшинка.jpg",null,"https://www.flickr.com/photos/matteokutufa/10159541025/in/",""],
	["03-3 кувшинка.jpg",null,"https://www.flickr.com/photos/jarbasmattos/9185156714/in","jarbas"],
	["04 кувшинка с корнями.jpg",null,"",""],
	["05 кубышка.jpg",null,"https://www.flickr.com/photos/92740970@N03/16205464470/in","Zi W"],
	["06-1 полярный мак.jpg",null,"https://www.flickr.com/photos/raudkollur/5857417820/in/","Örn Óskarsson"],
	["06-2 полярный мак.jpg",null,"https://www.flickr.com/photos/mghnriley/14454357632/in","shoots canons"],
	["06-3 полярный мак.jpg",null,"https://www.flickr.com/photos/tim-waters/7761514136/in","Tim Waters"],
	["07-1 королева-роза.jpg",null,"",""],
	["07-2 роза.jpg",null,"https://www.flickr.com/photos/millenks/15422197604/in","Milena Posteeva"],
	["08-1 королева-лилия.jpg",null,"",""],
	["08-2 лилия.jpg",null,"https://commons.wikimedia.org/wiki/File:Lilium_japonicum_(1).jpg","John Lykkegaard"],
	["09 пион.jpg",null,"https://www.flickr.com/photos/42654677@N02/24137972029/in","Moon..."],
	["10-1 вельможа-тюльпан.jpg",null,"",""],
	["10-2 тюльпан.jpg",null,"https://www.flickr.com/photos/39350987@N07/16859492141/in","Ksenia Davydova"],
	["11 нарцисс.jpg",null,"https://www.flickr.com/photos/atila_y/8585633739/in","Atila Yumusakkaya"],
	["12 колокольчик.jpg",null,"https://www.flickr.com/photos/vadim_plessky/5897071254/in","Vadim Plessky"],
	["12-2 колокольчики.jpg",null,"https://www.flickr.com/photos/gotowefoto/17089586419/in","tHeDiGiTaLdRoPoUt"],
	["12-3 колокольчик персиколистный (редкий).jpg",null,"https://www.flickr.com/photos/12639178@N07/2599652681/","naturgucker.de / enjoynature.net"],
	["13-1 лютик.jpg",null,"https://www.flickr.com/photos/okora/27001248831/in","Ольга К."],
	["13-2 лютик.jpg",null,"https://www.flickr.com/photos/s_cher/15492011126/in/","Sergei Chernavin"],
	["14 звездчатка.jpg",null,"https://www.flickr.com/photos/m-ursus/5716164428/in","Михаил"],
	["15-1 мятлик.jpg",null,"https://www.flickr.com/photos/9942395@N04/27542823030/","Jonathan Barth"],
	["15-2 мятлик.jpg",null,"https://www.flickr.com/photos/9942395@N04/27542848460/","Jonathan Barth"],
	["15-3 мятлик.jpg",null,"https://www.flickr.com/photos/annetanne/486162453/in","AnneTanne"],
	["16-1 ковыль (волосатик).jpg",null,"https://www.flickr.com/photos/wild-eyes/10802927545/in","Sarah Gregg"],
	["16-2 овыль (перистый).jpg",null,"https://www.flickr.com/photos/123613181@N02/18132540908/in/","Anna Pérez Corominas"],
	["16-3 ковыль (красивейший).jpg",null,"https://www.flickr.com/photos/100087631@N08/14273953407/in","Ex Cogitator"],
	["17 клевер.jpg",null,"https://www.flickr.com/photos/hawkeye2011/7415102200/","Hawkeye2011"],
	["18 головка клевера.jpg",null,null,null],
	["19 горошек.jpg",null,"https://www.flickr.com/photos/jon_d_anderson/28951817468/","Jon. D. Anderson"],
	["20 кисть горошка.jpg",null,null,null],
	["21 сныть.jpg",null,"https://www.flickr.com/photos/tico_bassie/2693917662/","--Tico--"],
	["22 сложный зонтик сныти.jpg",null,"",""],
	["23 ромашка.jpg",null,"https://www.flickr.com/photos/apploadr/25604777684/in/","voyageurrr"],
	["24 соцветие ромашки.jpg",null,"",""],
	["25-1 одуванчик.jpg",null,"https://www.flickr.com/photos/112672627@N03/16963605917/in","Aaron Swift"],
	["25-2 одуванчик.jpg",null,"https://www.flickr.com/photos/allanhowe/7188731264/in","Allan Howe"],
	["25-3 одуванчик.jpg",null,"https://www.flickr.com/photos/114017326@N05/14185864309/in","Snowlike96"]
],
"options":{}}
!%/
|visibleName|Цветковые травы|
|ссылка на контент шага|https://youtu.be/CkquqHVZF_o|
|тип шага|video|
|ссылка на контент шага|./environment/task_23-3/index.html|
|тип шага|task|
|visibleName|Цветковые травы|
|ссылка на контент шага|./environment/JPG/text_23_1.jpg|
|тип шага|pager|
|visibleName|Цветковые травы|
|table of contents thumb|text_23_1.jpg|
|ссылка на контент шага|./environment/JPG/text_23_2.jpg|
|тип шага|pager|
|visibleName|Соцветия|
|table of contents thumb|text_23_2.jpg|
|ссылка на материал|./environment/PDF/23-Цветковые_травы-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|850 Кб|
|ссылка на материал|./environment/PDF_2/23-Цветковые_травы-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|223 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/24. Чем полезны и опасны животные для человека/|
!!!Описание
С&nbsp;давних времён животные приносят людям самую разную пользу: кормят, лечат, одевают, помогают перевозить грузы. Но&nbsp;есть и&nbsp;опасности, связанные с&nbsp;животными: они могут укусить, ужалить, заразить человека болезнью, испортить урожай. И&nbsp;всё-таки пользы гораздо больше, чем опасностей!
!%//%
!gallery data
{"data":[
	["01 древний охотник.jpg",null,null,null],
	["02 рыба.jpg",null,null,null],
	["03 икра.jpg",null,null,null],
	["04 гусь.jpg",null,null,null],
	["05 яйца.jpg",null,null,null],
	["06 пчела.jpg",null,null,null],
	["07 польза от пчёл.jpg",null,null,null],
	["08 двустворчатый моллюск.jpg",null,null,null],
	["09 улитка.jpg",null,null,null],
	["10 осьминог.jpg",null,null,null],
	["11 кальмар.jpg",null,null,null],
	["12 рак.jpg",null,null,null],
	["13 омар.jpg",null,"https://www.flickr.com/photos/animaliaproject/6543245559/in","Patrick Randall"],
	["14 лангуст.jpg",null,"https://www.flickr.com/photos/stefankoeder/8086863240/","Stefan Köder"],
	["15 молоко.jpg",null,"",""],
	["16 шерсть.jpg",null,"",""],
	["17 верблюд.jpg",null,"",""],
	["18 тутовый шелкопряд.jpg",null,"",""],
	["19 свинья.jpg",null,"",""],
	["20 корова.jpg",null,"",""],
	["21 пуховик.jpg",null,"",""],
	["22 утка.jpg",null,"",""],
	["23 шуба.jpg",null,"",""],
	["24 заяц.jpg",null,"",""],
	["25 бобр.jpg",null,"",""],
	["26 торговец мехами.jpg",null,"",""],
	["27 верблюд-перевозчик.jpg",null,"",""],
	["28 олень сани.jpg",null,"",""],
	["29 собака.jpg",null,"",""],
	["30 змеиный яд.jpg",null,"",""],
	["32 мазь.jpg",null,"",""],
	["33 панты.jpg",null,"https://www.flickr.com/photos/cirdan-travels/16552772248/in","cirdantravels (Fons Buts)"],
	["34 средство от ран и ожогов.jpg",null,"",""],
	["35 медведь.jpg",null,"https://www.flickr.com/photos/willwade/6042693682/in","Will Wade"],
	["36 рысь.jpg",null,"https://www.flickr.com/photos/butohmedusa/19407760538/in","Sarah A."],
	["37-1 волки в ночном лесу.jpg",null,"",""],
	["37-2 волк.jpg",null,"https://www.flickr.com/photos/81710321@N08/9148112081","Christina Catlin-Groves"],
	["38-1 кабаны.jpg","","https://www.flickr.com/photos/58149020@N06/26484202398/","Tony Cox"],
	["38-2 кабан.jpg",null,null,null],
	["38_video_08 олень сани чум чукча.jpg","Северный олень",null,null],
	["38_video_08 олень.jpg","Олень",null,null],
	["39 олень.jpg",null,null,null],
	["40 оса.jpg",null,null,null],
	["41 императорский скорпион.jpg",null,"https://commons.wikimedia.org/wiki/File:Emperor_scorpion_or_Imperial_scorpion_(Pandinus_imperator).jpg","Mike Baird"],
	["42 каракурт.jpg",null,"https://commons.wikimedia.org/wiki/File:Latrodectus_tredecimguttatus_female.jpg","Kork~commonswiki"],
	["43 глисты.jpg",null,"",""],
	["44-1 таёжный клещщ.jpg",null,"https://fotki.yandex.ru/next/users/woodmen19/album/136845/view/659418","Владимир Брюхов"],
	["44-2 таёжный клещ.jpg",null,"https://fotki.yandex.ru/next/users/woodmen19/album/136845/view/212629","Владимир Брюхов"],
	["45 средство против насекомых.jpg",null,null,null],
	["46-1 саранча.jpg",null,null,null],
	["46-2 саранча, гусеницы, медведка.jpg",null,null,null]
],
"options":{}}
!%/
|visibleName|Чем полезны и&nbsp;опасны животные для человека|
|ссылка на контент шага|https://youtu.be/CfdsxzKhaOE|
|тип шага|video|
|visibleName|Польза животных|
|ссылка на контент шага|./environment/task_24-1/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_24_1.jpg|
|тип шага|pager|
|visibleName|Польза от&nbsp;животных: еда и&nbsp;лекарства|
|table of contents thumb|text_24_1.jpg|
|ссылка на контент шага|./environment/JPG/text_24_2.jpg|
|тип шага|pager|
|visibleName|Польза от&nbsp;животных: одежда и&nbsp;транспорт|
|table of contents thumb|text_24_2.jpg|
|ссылка на контент шага|./environment/JPG/text_24_3.jpg|
|тип шага|pager|
|visibleName|Чем опасны животные для человека|
|table of contents thumb|text_24_3.jpg|
|ссылка на контент шага|./environment/JPG/text_24_4.jpg|
|тип шага|pager|
|visibleName|Как избежать опасности|
|table of contents thumb|text_24_4.jpg|
|ссылка на материал|./environment/PDF/24-Чем_полезны_и_опасны_животные_для_человека-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,5 Мб|
|ссылка на материал|./environment/PDF_2/24-Чем_полезны_и_опасны_животные_для_человека-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|356 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/25. Чем полезны и опасны растения для человека/|
!!!Описание
Мы&nbsp;обсудили, что для человека значат животные, а&nbsp;теперь так&nbsp;же разберём, какую пользу приносят человеку растения и&nbsp;какие опасности они могут в&nbsp;себе скрывать.
!%//%
!gallery data
{"data":[
	["01 схема фотосинтеза.jpg",null,null,null],
	["02-1 хлеб.jpg",null,null,null],
	["02-2 колосья.jpg",null,null,null],
	["02-3 мука.jpg",null,null,null],
	["02-4 злаки.jpg",null,null,null],
	["03 овощи.jpg",null,null,null],
	["04 фрукты.jpg",null,null,null],
	["05 ламинария.jpg",null,null,null],
	["06 сено.jpg",null,null,null],
	["07 курицы едят зерно.jpg",null,null,null],
	["08 мята.jpg",null,"https://www.flickr.com/photos/jenn2d2/17139421052/in","jenn2d2"],
	["09 ромашка.jpg",null,"https://www.flickr.com/photos/iozio/7386356258/","iozio"],
	["10 зверобой.jpg",null,"https://www.flickr.com/photos/sumjulia/10969580076/in","Nietra*"],
	["11 шиповник.jpg",null,"https://www.flickr.com/photos/slicomir3/14372562711/in","tihoslic3"],
	["12 облепиха.jpg",null,"https://www.flickr.com/photos/30563539@N03/2864410637/in","tolyan4eg"],
	["13 древесина.jpg",null,"",""],
	["14 очаг.jpg",null,"",""],
	["15 кубики.jpg",null,"",""],
	["16-1 бамбук.jpg",null,"https://www.flickr.com/photos/10918289@N07/4651720903/in","inoc"],
	["16-2 бамбук.jpg",null,"https://www.flickr.com/photos/serlunar/6520685591/in","Serlunar"],
	["16-3 бамбук.jpg",null,"https://www.flickr.com/photos/jansm/8070288659/","jansmh"],
	["16-4 бамбук.jpg",null,"https://www.flickr.com/photos/rodrigoosorio/6165199684/in","RODRIGO OSORIO"],
	["17 декоративные растения.jpg",null,"",""],
	["18 одежда из льна.jpg",null,"",""],
	["19 книги.jpg",null,"",""],
	["20-1 растение и корова.jpg",null,"",""],
	["20-2 растение и корова.jpg",null,"",""],
	["21 бересклет.jpg",null,"https://www.flickr.com/photos/96601035@N07/14990777937/in","Сашкин Сад"],
	["22 лесная жимолость.jpg",null,"https://www.flickr.com/photos/bulletgirl/9327176863/in/","Sabrina Blechinger"],
	["23 вороний глаз.jpg",null,"https://www.flickr.com/photos/pe_ma/14993572941/in","Peter"],
	["24 цикута на болоте.jpg",null,"",""],
	["25 шипы розы.jpg",null,"https://www.flickr.com/photos/109055998@N08/14167579356/in","Elisabeth Els"],
	["26 боярышник.jpg",null,"https://www.flickr.com/photos/ibolshakov/14417185844/in/","Ivan Bolshakov"],
	["27 барбарис.jpg",null,"https://www.flickr.com/photos/casualsummer/10174678014/in","Mriya"],
	["28 кактус.jpg",null,"https://www.flickr.com/photos/peterpearson/4934913996/in","Peter Pearson"],
	["29 сорняки.jpg",null,null,null],
	["30 сельское хозяйство.jpg",null,null,null],
	["барбарис.jpg","Барбарис",null,null],
	["бересклет 2.jpg","Бересклет",null,null],
	["бересклет.jpg","Бересклет",null,null],
	["боярышник.jpg","Боярышник",null,null],
	["вороний глаз.jpg","Вороний глаз",null,null],
	["зверобой.jpg","Зверобой",null,null],
	["кактус.jpg","Кактус",null,null],
	["лесная жимолость.jpg","Лесная жимолость",null,null],
	["мешок с мукой.png","Мешок с мукой",null,null],
	["мята.jpg","Мята",null,null],
	["облепиха.jpg","Облепиха",null,null],
	["ромашка 2.jpg","Ромашка",null,null],
	["ромашка.jpg","Ромашка",null,null],
	["стол и хлеб.png","Стол и хлеб",null,null],
	["шиповник - 2.jpg","Шиповник",null,null],
	["шипы розы.jpg","Шипы розы",null,null]
],
"options":{}}
!%/
|visibleName|Чем полезны и&nbsp;опасны растения для человека|
|ссылка на контент шага|https://youtu.be/esv4Z7aZN_g|
|тип шага|video|
|ссылка на контент шага|./environment/task_25-2/index.html|
|тип шага|task|
|visibleName|Польза животных и&nbsp;растений|
|ссылка на контент шага|./environment/JPG/text_25_1.jpg|
|тип шага|pager|
|visibleName|Польза растений: кислород, еда и&nbsp;лекарства|
|table of contents thumb|text_25_1.jpg|
|ссылка на контент шага|./environment/JPG/text_25_2.jpg|
|тип шага|pager|
|visibleName|Польза растений: корм и&nbsp;материалы|
|table of contents thumb|text_25_2.jpg|
|ссылка на контент шага|./environment/JPG/text_25_3.jpg|
|тип шага|pager|
|visibleName|Чем опасны растения для человека|
|table of contents thumb|text_25_3.jpg|
|visibleName|Конспект для ученика|
|ссылка на материал|./environment/PDF/25-Чем полезны_и_опасны_растения_для_человека-Конспект.pdf|
|занимает памяти|1 Мб|
|ссылка на материал|./environment/PDF_2/25-Чем полезны_и_опасны_растения_для_человека-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|290 Кб|
<<lessonAdminPanel>>/%
|visibleName|26. Культурные злаки. Пшеница|
|galleryFolder|environment/galleries/26. Культурные злаки. Пшеница/|
!!!Описание
Некоторые растения люди специально выращивают, чтобы получать от&nbsp;них ещё больше пользы. Прежде всего, злаки. А&nbsp;главный злак для нашей страны&nbsp;&mdash; пшеница. Мы&nbsp;обсудим, как её&nbsp;выращивают и&nbsp;какие блюда из&nbsp;неё готовят.
!%//%
!gallery data
{"data":[
	["01 сельское хозяйство.jpg",null,null,null],
	["02 мятлик.jpg",null,"https://www.flickr.com/photos/annetanne/486162453/in","AnneTanne"],
	["03-1 пшеница.jpg",null,"https://www.flickr.com/photos/vladimirf/4874830533/in/","KeksKlip"],
	["03-2 пшеница.jpg",null,"https://www.flickr.com/photos/maria_keays/5927121394/in","Maria Keays"],
	["03-3 пшеница.jpg",null,"https://www.flickr.com/photos/kdg59/7657225286/in/","kadege59"],
	["03-4 пшеница зёрна.jpg",null,"https://www.flickr.com/photos/agrilifetoday/14206579449/in","AgriLife Today"],
	["03-5 колосья.jpg",null,"",""],
	["04-1 яровая пшеница.jpg",null,"",""],
	["04-2 яровая пшеница.jpg",null,"",""],
	["04-3 яровая пшеница.jpg",null,"",""],
	["04-4 яровая пшеница.jpg",null,"",""],
	["05-1 озимая пшеница.jpg",null,"",""],
	["05-2 озимая пшеница.jpg",null,"",""],
	["05-3 озимая пшеница.jpg",null,"",""],
	["05-4 озимая пшеница.jpg",null,"",""],
	["05-5 озимая пшеница.jpg",null,"",""],
	["10 комбайн.jpg",null,"https://www.flickr.com/photos/andrewconard/2621450095/","Andrew Conard"],
	["12-1 зернохранилище.jpg",null,"https://www.flickr.com/photos/pmillera4/12162109155/","Peter Miller"],
	["12-2 зернохранилище.jpg",null,"https://www.flickr.com/photos/78555627@N02/8091519447/","Diyan Nenov"],
	["12-3 зернохранилище.jpg",null,"https://www.flickr.com/photos/forthrightjames/8317550839/","Forthright James"],
	["13 белый хлеб.jpg",null,"",""],
	["14 пшеничная каша.jpg",null,"",""],
	["15 манная каша.jpg",null,"",""],
	["16 просо.jpg",null,"https://www.flickr.com/photos/fluffymuppet/6305891756/","Fluffymuppet"],
	["17 веник из проса.jpg",null,"https://www.flickr.com/photos/ausiekoala/6574740195/","Bruce Vaughan"]
],
"options":{}}
!%/
|visibleName|Культурные злаки. Пшеница|
|ссылка на контент шага|https://youtu.be/OH5vitD7w2o|
|тип шага|video|
|visibleName|Сельскохозяйственные приспособления|
|ссылка на контент шага|./environment/task_26-3/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_26_1.jpg|
|тип шага|pager|
|visibleName|Что такое сельское хозяйство|
|table of contents thumb|text_26_1.jpg|
|ссылка на контент шага|./environment/JPG/text_26_2.jpg|
|тип шага|pager|
|visibleName|Пшеницы|
|table of contents thumb|text_26_2.jpg|
|ссылка на материал|./environment/PDF/26-Культурные_злаки_Пшеница-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|570 Кб|
|ссылка на материал|./environment/PDF_2/26-Культурные_злаки_Пшеница-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|274 Кб|
<<lessonAdminPanel>>/%
|visibleName|27. Другие культурные злаки|
|galleryFolder|environment/galleries/27. Другие культурные злаки/|
!!!Описание
Что такое &laquo;мамалыга&raquo;? Можно&nbsp;ли из&nbsp;злаков сделать бумагу? Чем сено отличается от&nbsp;соломы? Мы&nbsp;ответим на&nbsp;эти вопросы и&nbsp;обсудим, какие ещё злаки, кроме пшеницы, выращивают люди.
!%//%
!gallery data
{"data":[
	["01-1 рожь.jpg",null,"https://www.flickr.com/photos/11213292@N05/4809782720/in/","September Songs"],
	["01-2 рожь.jpg",null,"https://www.flickr.com/photos/siniy_kot/20823294628/in/","klgfinn"],
	["01-3 рожь.jpg",null,"https://www.flickr.com/photos/weiswaldemar/14442719421/in","Waldemar Weiss"],
	["01-4 рожь.jpg",null,"https://www.flickr.com/photos/n-may/6823645465/in/","nklwrnc"],
	["02 ржаной хлеб.jpg",null,"",""],
	["03 кисель.jpg",null,"",""],
	["04 квас.jpg",null,"",""],
	["05 ржаная каша.jpg",null,"",""],
	["06-1 овёс.jpg",null,"",""],
	["06-2 овёс.jpg",null,"https://www.flickr.com/photos/bolandfamily0621/17120524061/in","Brad Boland"],
	["06-3 овёс.jpg",null,"https://www.flickr.com/photos/30548395@N08/3217858375/in","juliet d-h"],
	["06-4 овёс.JPG",null,"https://commons.wikimedia.org/wiki/File:Avena_sativa_002.JPG","H. Zell"],
	["07 овсянка.jpg",null,"",""],
	["08 овсяные печенья.jpg",null,"",""],
	["09-1 ячмень.jpg",null,"https://www.flickr.com/photos/8663137@N04/3672037844","barockschloss"],
	["10 перловая каша.jpg",null,"",""],
	["11-1 кукуруза.jpg",null,"https://www.flickr.com/photos/manel/4442575459/in/","Manel"],
	["11-2 кукуруза.jpg",null,"",""],
	["12 мамалыга.jpg",null,"",""],
	["13 рис.jpg",null,"https://www.flickr.com/photos/yandeardana/7125293243/in/","Yande Ardana"],
	["14-1 рисовое поле.jpg",null,"https://www.flickr.com/photos/chansrithaweeporn/15167545222/in/","Chan Srithaweeporn"],
	["14-2 рисовое поле.jpg",null,"https://www.flickr.com/photos/bomobob/448382120/in/","bomobob"],
	["14-3 рисовое поле.jpg",null,"https://www.flickr.com/photos/oarranzli/6225404635/in/","oarranzli"],
	["15 рис.jpg",null,"https://www.flickr.com/photos/52601259@N05/8187851789/in/","Simon"],
	["16 рис варёный.jpg",null,"https://www.flickr.com/photos/tokyoviews/12835181134/in/","TokyoViews"],
	["16 сладости из риса.jpg",null,"https://www.flickr.com/photos/koreanet/4384482630/in/","Republic of Korea"],
	["17 рис.jpg",null,"",""],
	["18 книга на рисовой бумаге.jpg",null,"",""],
	["19 стебли срезанные.jpg",null,"https://www.flickr.com/photos/ninga/8059968515/","Janeanna Rivera"],
	["20 сено.jpg",null,"https://www.flickr.com/photos/92867842@N03/15000717586/","aine ni giolla phadraig"],
	["21 сено.jpg",null,"",""],
	["22 солома.jpg",null,"https://www.flickr.com/photos/chrissphotos/9659306854/","Chrissphotos"],
	["23 соломенная игрушка.jpg",null,"https://fotki.yandex.ru/next/search/%D1%81%D0%BE%D0%BB%D0%BE%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%B8%D0%B3%D1%80%D1%83%D1%88%D0%BA%D0%B0/users/tatiana-favourable/album/217160/view/588414?type=image&search-author=tatiana-favourable&page=0&how=week","tatiana.favourable"]
],
"options":{}}
!%/
|visibleName|Другие культурные злаки|
|ссылка на контент шага|https://youtu.be/KE1CtTE8itQ|
|тип шага|video|
|ссылка на контент шага|./environment/task_27-1/index.html|
|тип шага|task|
|visibleName|Злаки|
|ссылка на контент шага|./environment/JPG/text_27_1.jpg|
|тип шага|pager|
|visibleName|Другие культурные злаки|
|table of contents thumb|text_27_1.jpg|
|ссылка на контент шага|./environment/JPG/text_27_2.jpg|
|тип шага|pager|
|visibleName|Сено и&nbsp;солома|
|table of contents thumb|text_27_2.jpg|
|ссылка на материал|./environment/PDF/27-Другие_культурные_злаки-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|660 Кб|
|ссылка на материал|./environment/PDF_2/27-Другие_культурные_злаки-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|218 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/28. Овощи/|
!!!Описание
Вторая важная группа культурных растений&nbsp;&mdash; это овощи. Мы&nbsp;обсудим, за&nbsp;кем из&nbsp;них ухаживать проще, а&nbsp;за&nbsp;кем хлопотнее, и&nbsp;вспомним блюда, которые из&nbsp;них готовят.
!%//%
!gallery data
{"data":[
	["01 картофель.jpg",null,null,null],
	["02 поле с трактором.jpg",null,null,null],
	["03 лейка.jpg",null,null,null],
	["04-1 колорадский жук.jpg",null,"https://www.flickr.com/photos/mgrimm82/20310109072/in","Martin Grimm"],
	["04-2_колорадский жук.jpg",null,"",""],
	["05 опрыскивание поля.jpg",null,"",""],
	["06 картофель вареный.jpg",null,"",""],
	["07 чипсы картофельные.jpg",null,"",""],
	["08 кочан капусты.jpg",null,"",""],
	["09 капуста.jpg",null,"https://www.flickr.com/photos/extensionhorticulture/2863345942/in","eXtension.org: Gardens, Lawns, and Landscapes"],
	["10 теплица.jpg",null,"",""],
	["11 рассада.jpg",null,"",""],
	["12 щи.jpg",null,"",""],
	["13 квашеная капуста.jpg",null,"https://www.flickr.com/photos/128883229@N08/19199346434/in/","Eugene Evehealth"],
	["14-1 лук.jpg",null,"",""],
	["14-2 лук.jpg",null,"https://www.flickr.com/photos/klephoto/5840047199/in","Kim Takes Photos"],
	["14-3 лук.jpg",null,"https://www.flickr.com/photos/92499892@N08/8402629154/in/","MillyRainbow"],
	["15 лук на грядке.jpg",null,"https://www.flickr.com/photos/newsky13/20053770921/in","Aleksandr Newsky"],
	["16 лук меняют на хлеб.jpg",null,"",""],
	["17 суп.jpg",null,"",""],
	["18 салат.jpg",null,"",""],
	["19-1 помидор.jpg",null,"",""],
	["19-2 помидор.jpg",null,"https://www.flickr.com/photos/thehamels/218149421/in/","hollyhamel"],
	["19-3 помидор.jpg",null,"https://www.flickr.com/photos/puppy-eyes/12343266874/in","Irene"],
	["20 парник.jpg",null,"https://www.flickr.com/photos/iita-media-library/8090422597/in/","International Institute of Tropical Agriculture"],
	["21 помидор болеет.jpg",null,"https://www.flickr.com/photos/42543652@N03/3944489524/","Jennifer Flitcraft"],
	["22-1 огурец.jpg",null,"",""],
	["22-2 огурец.jpg",null,"https://www.flickr.com/photos/70241253@N06/7347944594/in/","BoothsCountry"],
	["23 огурец.jpg",null,"https://www.flickr.com/photos/santacruzfarm/5638938690/in/","Hey! Sam !!"],
	["23-2 огурец.jpg",null,"https://www.flickr.com/photos/santacruzfarm/5972832818/in","Hey! Sam !!"],
	["24 банка солений.jpg",null,"",""],
	["25 корнеплоды на грядке.jpg",null,"",""],
	["26 редиска.jpg",null,"https://www.flickr.com/photos/129849442@N06/19510327105/","Niechelle wade"],
	["27 свекла.jpg",null,"https://www.flickr.com/photos/angeliquelittle/2650557771/","littlewonderpics"],
	["28 прополка.jpg",null,"https://www.flickr.com/photos/35907287@N06/8410197226/","cmillsap1"],
	["29 корнеплоды собранные.jpg",null,"https://www.flickr.com/photos/infusionfibers/5736129940/","abby"],
	["30 редька.jpg",null,"https://www.flickr.com/photos/kawilson/2602438168/in","Kenneth A. Wilson"],
	["31 редис.jpg",null,"https://www.flickr.com/photos/7639371@N05/14311670909/in/","Daniel"],
	["32 свекла.jpg",null,"https://www.flickr.com/photos/ryan7077/1017778495/in","ryian"],
	["33 сахарная свекла.jpg",null,"https://www.flickr.com/photos/clizbiz/10212919443/in/","Heather"],
	["34 горох.jpg",null,"https://www.flickr.com/photos/54912928@N06/5087112309/in/","Isabel Eyre"],
	["35 соя.jpg",null,"https://www.flickr.com/photos/deftgurl/3726221695/in/","Woodie Anderson"],
	["36 чечевица.jpg",null,"https://www.flickr.com/photos/cristine/149569117/in/","xtinehlee"],
	["37 зерна гороха.jpg",null,"https://www.flickr.com/photos/127795129@N02/15062675710/in/","Lera Zinoveva"],
	["38 фасоль.jpg",null,"https://www.flickr.com/photos/36062315@N08/4300636744/in","Sgt. Huxtable"],
	["39 соя.jpg",null,"https://www.flickr.com/photos/funcrunch/8054173211/in/","Pax Ahimsa Gethen"],
	["40 тофу.jpg",null,"https://www.flickr.com/photos/dinnercakes/4587188563/","Dinner Cakes"],
	["41 соевое молоко.jpg",null,"https://www.flickr.com/photos/118126242@N02/15318754539/","Food Porn Vegan Style"],
	["42 соевый соус.jpg",null,null,null]
],
"options":{}}
!%/
|visibleName|Овощи|
|ссылка на контент шага|https://youtu.be/ojOD9bY4lyE|
|тип шага|video|
|visibleName|Консервы|
|ссылка на контент шага|./environment/task_28-5/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_28_1.jpg|
|тип шага|pager|
|visibleName|Картофель и&nbsp;капуста|
|table of contents thumb|text_28_1.jpg|
|ссылка на контент шага|./environment/JPG/text_28_2.jpg|
|тип шага|pager|
|visibleName|Корнеплоды и&nbsp;бобовые|
|table of contents thumb|text_28_2.jpg|
|ссылка на материал|./environment/PDF/28-Овощи-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|553 Кб|
|ссылка на материал|./environment/PDF_2/28-Овощи-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|954 Кб|
|visibleName||
|galleryFolder|environment/galleries/29. Фрукты и другие культурные растения/|
<<lessonAdminPanel>>/%
!!!Описание
Это урок посвящён культурным растениям, которые не&nbsp;относятся ни&nbsp;к&nbsp;злакам, ни&nbsp;к&nbsp;овощам. Мы&nbsp;обсудим, как выбирают место для яблоневого сада, как из&nbsp;растений получают ткани, какие растения помогают нам выздороветь, а&nbsp;какие вредят здоровью.
!%//%
!gallery data
{"data":[
	["01 бананы.jpg","","",""],
	["02 груша зелёная.jpg","","",""],
	["03 мандарин.jpg","","",""],
	["04 слива.jpg","","",""],
	["05 яблоко.jpg","","",""],
	["06 яблоки.jpg","","https://www.flickr.com/photos/giantmike13/9811194363/in","giantmike"],
	["07 яблоки.jpg","","https://www.flickr.com/photos/kate12303/2750124426/in","Kate"],
	["08 лес защищает сад от ветра.jpg","","",""],
	["09 яблочный сок.jpg","","https://www.flickr.com/photos/mrbeama/6070293499/","Neil Brown"],
	["10 сушёные яблоки.jpg","","https://www.flickr.com/photos/125733347@N06/15452023497/","eceveryshop"],
	["11 печёные яблоки.jpg","","https://www.flickr.com/photos/simonesnake/6221442242/","Simone Owings"],
	["12 яблочное пюре.jpg","","",""],
	["13 вишня.jpg","","",""],
	["14 вишня.jpg","","https://www.flickr.com/photos/elahe63/4805314201/in","Elahe Dastgheib"],
	["15 слива.jpg","","",""],
	["16 слива.jpg","","https://www.flickr.com/photos/baileysbigblog/7386276516/in/","Pete Bailey"],
	["17 персик и абрикос.jpg","","",""],
	["18 персики.jpg","","https://www.flickr.com/photos/28904058@N05/6040288634/","John Kuster"],
	["19 абрикосы.jpg","","https://www.flickr.com/photos/paul-h-burns/14406928084/","Paul Burns"],
	["20 абрикосовое варенье.jpg","","https://www.flickr.com/photos/queenieandthedew/4720591892/","Sally"],
	["21 курага и чернослив.jpg","","",""],
	["22 апельсин.jpg","","",""],
	["23 мандарин.jpg","","",""],
	["24 лимон.jpg","","",""],
	["25 лимон.jpg","","https://www.flickr.com/photos/45041658@N02/16289407675/","xaviergardens"],
	["26 апельсиновый сок.jpg","","https://www.flickr.com/photos/francisjimenezmeca/8777474270/in","FRANCIS JIMENEZ MECA"],
	["27 цитрусовые деревья.jpg","","https://www.flickr.com/photos/tahawus/15684496693/","tahawus"],
	["28 мандарины.jpg","","https://www.flickr.com/photos/22218848@N03/9220129725/","tco1961"],
	["29 мандарины.jpg","","https://www.flickr.com/photos/oliveplum/12017267296/","oliveplum"],
	["30 бутылка масла.jpg","","",""],
	["31 подсолнечник.jpg","","https://www.flickr.com/photos/ourcrazylife/5016899924/","angellaD"],
	["32 подсолнечник.jpg","","https://www.flickr.com/photos/94178902@N05/9566497755","David Latham"],
	["33 олива.jpg","","https://www.flickr.com/photos/polispoliviou/15098926323/in","polis poliviou"],
	["34 олива.jpg","","https://www.flickr.com/photos/stewdean/3963054413/","Stew Dean"],
	["35 оливковое масло.jpg","","",""],
	["36 кукуруза.jpg","","https://www.flickr.com/photos/realagriculture/26906453741/","RealAgriculture.com"],
	["37 вещи из льна.jpg","","",""],
	["38 лён.jpg","","https://www.flickr.com/photos/66479193@N06/7950668240/","Susanne Wiik"],
	["39 хлопчатник.jpg","","",""],
	["40 поле хлопчатника.jpg","","https://www.flickr.com/photos/cindypl/4121504714/","FlossieJane"],
	["41 хлопок.jpg","","https://www.flickr.com/photos/kimberlykv/6288230823/in","Kimberly Vardeman"],
	["42 хлопок.jpg","","https://www.flickr.com/photos/brennwald/10851705825/in","Daniel"],
	["43 хлопок.jpg","","https://www.flickr.com/photos/joyatlast/9811295313/","Backyardbella"],
	["44 комбайн собирает хлопок.jpg","","https://www.flickr.com/photos/kimberlykv/4087951240/","Kimberly Vardeman"],
	["45 вата.jpg","","",""],
	["46 роза.jpg","","https://www.flickr.com/photos/shell_b/5209332041/in/","Michelle Bexon"],
	["47 тюльпаны.jpg","","https://www.flickr.com/photos/v57/8514411475/in","Valery Chernodedov"],
	["48 поле тюльпанов.jpg","","https://www.flickr.com/photos/26556145@N02/13753236863/","Vicki Dixon"],
	["49 теплица с цветами.jpg","","https://www.flickr.com/photos/dannytp/25514516584/","Danny te Pas"],
	["50 теплица с цветами.jpg","","https://www.flickr.com/photos/93530730@N04/18402734474/","Ronayne94"],
	["51 мята.jpg","","https://www.flickr.com/photos/jenn2d2/17139421052/in","jenn2d2"],
	["52 календула.jpg","","https://www.flickr.com/photos/zoeandjohn/4519677779/","Zo's photos"],
	["53 сушёные травы.jpg","","https://www.flickr.com/photos/goodcough/3378373599/","Dmitry Gudkov"],
	["54 табак.jpg","","https://www.flickr.com/photos/richardpowers/2828902401/","Richard Powers"],
	["55 сигарета.jpg","","",""],
	["56 чай.jpg","","https://www.flickr.com/photos/oporquinho/15288530/","oporquinho"],
	["57 кофе.jpg","","https://www.flickr.com/photos/yrpopqueen/5520111832/","yrpopqueen"],
	["58 какао.jpg","","https://www.flickr.com/photos/135820899@N04/24179729930/","Cacao Tour"],
	["59 чай.jpg","","",""],
	["60 кофе.jpg","","",""],
	["61 какао.jpg","","",""],
	["62 шоколад.jpg","","",""],
	["63 какао плоды.jpg","","https://www.flickr.com/photos/74653488@N08/14061833818/","daviddontdance"],
	["64 кофе плоды.jpg","","https://www.flickr.com/photos/urbanoprudente/8111567972/","Fernando Urbano"],
	["65 какао.jpg","","https://www.flickr.com/photos/bambooland/18287568584/","bambooland"],
	["66 кофе.jpg","","https://www.flickr.com/photos/bklynphotochik/8323010015/in","Tonia Mc Caskill"]
],
"options":{}}
!%/
|visibleName|Фрукты и&nbsp;другие культурные растения|
|ссылка на контент шага|https://youtu.be/9_yZ-yE8ILM|
|тип шага|video|
|ссылка на контент шага|./environment/task_29-1/index.html|
|тип шага|task|
|visibleName|Овощи и&nbsp;фрукты|
|тип шага|task|
|visibleName|Из чего это сделано?|
|ссылка на контент шага|./environment/task_29-2/index.html|
|ссылка на контент шага|./environment/JPG/text_29_1.jpg|
|тип шага|pager|
|visibleName|Яблоки|
|ссылка на контент шага|./environment/JPG/text_29_2.jpg|
|тип шага|pager|
|visibleName|Косточковые и&nbsp;цитрусы|
|ссылка на контент шага|./environment/JPG/text_29_3.jpg|
|тип шага|pager|
|visibleName|Прядильные растения|
|ссылка на контент шага|./environment/JPG/text_29_4.jpg|
|тип шага|pager|
|visibleName|Другие культурные растения|
|ссылка на материал|./environment/PDF/29-Фрукты_и_другие_культурные_растения-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,1 Мб|
|ссылка на материал|./environment/PDF_2/29-Фрукты_и_другие_культурные_растения-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|227 Кб|
|занимает памяти|686 Кб|
|ссылка на материал|./environment/PDF/02-Чем_живое_отличается_от_неживого-Конспект.pdf|
|visibleName|Конспект для ученика|
|ссылка на материал|./environment/PDF_2/02-Чем_живое_отличается_от_неживого-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|191 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/03. Царства живой природы/|
!!!Описание
Учёные делят живую природу на&nbsp;царства. Давайте разберёмся, кто живёт в&nbsp;этих царствах, и&nbsp;нарисуем их&nbsp;на&nbsp;карте мира живого.
!Дополнительно об уроке

!gallery data
{"data":[
	["01 карта живой природы.jpg"]
],
"options":{}}
!%/
|тип шага|video|
|ссылка на контент шага|https://youtu.be/NZKvpK535ZY|
|visibleName|Царства живой природы|
|ссылка на контент шага|./environment/task_03-1/index.html|
|тип шага|task|
|visibleName|Царства живой природы|
|ссылка на контент шага|./environment/JPG/text_03_1.jpg|
|тип шага|pager|
|visibleName|Царства живой природы|
|table of contents thumb|text_03_1.jpg|
|visibleName||
|galleryFolder|./environment/galleries/30. Животноводство. Еда/|
<<lessonAdminPanel>>/%
!!!Описание
Этот урок посвящён животным, которых люди выращивают для еды. Мы&nbsp;расскажем, чем кормят кур и&nbsp;свиней и&nbsp;какой путь проходит молоко от&nbsp;коровьего вымени до&nbsp;нашего стола.
!%//%
!gallery data
{"data":[
	["01 сельское хозяйство.jpg","","",""],
	["02 собака.jpg","","",""],
	["03 кошка.jpg","","",""],
	["04 корова.jpg","","",""],
	["05 ведро молока.jpg","","",""],
	["06 бутылка молока.jpg","","",""],
	["07 десять литров молока.jpg","","",""],
	["08 пастух и коровы.jpg","","",""],
	["09 пастух.jpg","","",""],
	["10 сено.jpg","","https://www.flickr.com/photos/92867842@N03/15000717586/","aine ni giolla phadraig"],
	["11 солома.jpg","","https://www.flickr.com/photos/chrissphotos/9659306854/","Chrissphotos"],
	["12 доярка.jpg","","",""],
	["13 корова.jpg","","",""],
	["14 творог.jpg","","",""],
	["15 йогурт.jpg","","",""],
	["16 коза.jpg","","",""],
	["17 овца.jpg","","",""],
	["18 свинья.jpg","","",""],
	["19 свинки и корм.jpg","","",""],
	["20 корм для свиней.jpg","","",""],
	["21 курица.jpg","","",""],
	["22 утка и утята.jpg","","",""],
	["23 гусь.jpg","","",""],
	["24 яйца и мясо.jpg","","",""],
	["25 курятник.jpg","","https://www.flickr.com/photos/mihalis/2872439875/","Jay Klein"],
	["26 курятник.jpg","","https://www.flickr.com/photos/ruslik/4156983465/","Ruslan Kapral"],
	["27 семечки.jpg","","",""],
	["28 скорлупа.jpg","","",""],
	["29 пчела.jpg","","",""],
	["30 пчела.jpg","","",""]
],
"options":{}}
!%/
|visibleName|Животноводство. Еда|
|ссылка на контент шага|https://youtu.be/I5oOhbIQn5A|
|тип шага|video|
|ссылка на контент шага|./environment/task_30-1/index.html|
|тип шага|task|
|visibleName|Уход за&nbsp;животными|
|ссылка на контент шага|./environment/JPG/text_30_1.jpg|
|тип шага|pager|
|visibleName|Коровы, козы и&nbsp;овцы|
|ссылка на контент шага|./environment/JPG/text_30_2.jpg|
|тип шага|pager|
|visibleName|Птицы, свиньи и&nbsp;пчёлы|
|ссылка на материал|./environment/PDF/30-Животноводство_Еда-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|487 Кб|
|ссылка на материал|./environment/PDF_2/30-Животноводство_Еда-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|114 Кб|
|visibleName||
|galleryFolder|./environment/galleries/31. Животноводство. Одежда и транспорт/|
<<lessonAdminPanel>>/%
!!!Описание
Люди разводят животных не&nbsp;только ради пищи: на&nbsp;этом уроке мы&nbsp;вспомним тех, кто помогает нам согреваться в&nbsp;мороз, перемещаться и&nbsp;перевозить грузы. А&nbsp;ещё разберёмся, что такое породы и&nbsp;зачем они нужны.
!%//%
!gallery data
{"data":[
	["01 одежда из льна.jpg","","",""],
	["02 кожа.jpg","","",""],
	["03 шерсть.jpg","","",""],
	["04 верблюд.jpg","","",""],
	["05 шуба.jpg","","",""],
	["06 песец.jpg","","https://www.flickr.com/photos/drdad/6343890526/in/","Daniel D'Auria"],
	["07 норка.jpg","","https://www.flickr.com/photos/pcurcis/13395219503/in","Peter Curcis"],
	["08 звероферма.jpg","","https://www.flickr.com/photos/dzivniekubriviba/8503599200/in/album-72157632846091320/","Dzīvnieku brīvība"],
	["09 пуховик.jpg","","",""],
	["10 гусь.jpg","","",""],
	["11 утка.jpg","","",""],
	["12 тутовый шелкопряд.jpg","","",""],
	["13 тутовый шелкопряд.jpg","","https://www.flickr.com/photos/josedelgar/26207386455/in/photolist-FVRGWB-9PWFHE","Jose Delgar"],
	["14 повозка с мехами.jpg","","",""],
	["15 лошадь.jpg","","",""],
	["16 слон.jpg","","",""],
	["17 коза.jpg","","",""],
	["18 шерстяная коза.jpg","","",""],
	["19 молочная коза.jpg","","",""],
	["20 мясная и яйценосная куры.jpg","","",""],
	["21 собака.jpg","","",""],
	["22 фокстерьер.jpg","","https://www.flickr.com/photos/freyaherridge/14720675265/in","maxsharesstuff"],
	["23 овчарка.jpg","","https://www.flickr.com/photos/kiased/17090321536/in/","Kia Sedighi"],
	["24 колосья.jpg","","",""],
	["25 озимая пшеница.jpg","","",""],
	["26 озимая пшеница.jpg","","",""],
	["27 озимая пшеница.jpg","","",""],
	["28 озимая пшеница.jpg","","",""],
	["29 озимая пшеница.jpg","","",""],
	["30 яровая пшеница.jpg","","",""],
	["31 яровая пшеница.jpg","","",""],
	["32 яровая пшеница.jpg","","",""],
	["33 яровая пшеница.jpg","","",""]
],
"options":{}}
!%/
|visibleName|Животноводство. Одежда и&nbsp;транспорт|
|ссылка на контент шага|https://youtu.be/tn5-uLE4Fnw|
|тип шага|video|
|visibleName|Животноводство|
|ссылка на контент шага|./environment/task_30-2/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_31_1.jpg|
|тип шага|pager|
|visibleName|Породы животных|
|ссылка на материал|./environment/PDF/31-Животноводство_Одежда_и_транспорт-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|243 Кб|
|ссылка на материал|./environment/PDF_2/31-Животноводство_Одежда_и_транспорт-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|155 Кб|
|visibleName||
|galleryFolder|./environment/galleries/32. Знакомство с грибами/|
<<lessonAdminPanel>>/%
!!!Описание
Мы&nbsp;переходим в&nbsp;новое царство&nbsp;&mdash; царство грибов! И&nbsp;на&nbsp;первом уроке поговорим о&nbsp;том, что это за&nbsp;организмы и&nbsp;почему их&nbsp;нельзя отнести ни&nbsp;к&nbsp;растениям, ни&nbsp;к&nbsp;животным.
!%//%
!gallery data
{"data":[
	["01 условный гриб.jpg"],
	["02 яблоко.jpg"],
	["03 яблоня.jpg"],
	["04 грибница.jpg"],
	["05 грибница.jpg"],
	["06 грибница.jpg"],
	["07 грибница.jpg"],
	["08 грибница и плодовое тело.jpg"]
],
"options":{}}
!%/
|visibleName|Знакомство с&nbsp;грибами|
|ссылка на контент шага|https://youtu.be/z0RpgC6qDTo|
|тип шага|video|
|visibleName|Помоги кроту|
|ссылка на контент шага|./environment/task_31-2/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_32_1.jpg|
|тип шага|pager|
|visibleName|Как устроены грибы|
|ссылка на контент шага|./environment/JPG/text_32_2.jpg|
|тип шага|pager|
|visibleName|Признаки грибов|
|ссылка на материал|./environment/PDF/32-Знакомство_с_грибами-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|310 Кб|
|ссылка на материал|./environment/PDF_2/32-Знакомство_с_грибами-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|145 Кб|
|visibleName||
|galleryFolder|./environment/galleries/33. Чем полезны грибы для человека/|
<<lessonAdminPanel>>/%
!!!Описание
Оказывается, грибной суп&nbsp;&mdash; это не&nbsp;главное, что грибы дают людям. Они помогают нам печь хлеб и&nbsp;получать уксус, поддерживать здоровье витаминами и&nbsp;лечиться от&nbsp;опасных болезней антибиотиками.
!%//%
!gallery data
{"data":[
	["01 «полезный» и «вредный» грибы.jpg","«Полезный» и «вредный» грибы","",""],
	["02 «полезный» гриб.jpg","«Полезный» гриб","",""],
	["03 дрожжи.jpg","","",""],
	["04 выпечка.jpg","","",""],
	["05 дрожжи-повара.jpg","","",""],
	["06 витамины.jpg","","",""],
	["07 мази и шампуни.jpg","","",""],
	["08 спирт.jpg","","",""],
	["09 уксус.jpg","","",""],
	["10 незамерзающая жидкость.jpg","","",""],
	["11 пятно на рубашке.jpg","","",""],
	["12 обработка кожи перед уколом.jpg","","",""],
	["13 съедобные грибы.jpg","","",""],
	["14 белый гриб.jpg","","",""],
	["15 белый гриб.jpg","","https://fotki.yandex.ru/users/woodmen19/","Владимир Брюхов"],
	["16 подберёзовик.jpg","","",""],
	["17 подберёзовик.jpg","","https://www.flickr.com/photos/aberkano/3889452739/","Aleksei Bereznisky"],
	["18 подберёзовик.jpg","","https://fotki.yandex.ru/users/woodmen19/","Владимир Брюхов"],
	["19 подберёзовик под берёзой.jpg","","https://fotki.yandex.ru/users/woodmen19/","Владимир Брюхов"],
	["20 подосиновик.jpg","","",""],
	["21 подосиновик.jpg","","https://fotki.yandex.ru/users/woodmen19/","Владимир Брюхов"],
	["22 лисичка.jpg","","",""],
	["23 лисичка.jpg","","https://fotki.yandex.ru/users/woodmen19/","Владимир Брюхов"],
	["24 лисичка.jpg","","https://www.flickr.com/photos/tgerus/7999753411/","Tatters"],
	["25 кефирный гриб.jpg","","",""],
	["26 кефир.jpg","","",""],
	["27 чайный гриб.jpg","","https://www.flickr.com/photos/yuki2008/3031174229/","Yuki-2008"],
	["28 гриб и бактерия враждуют.jpg","","",""],
	["29 антибиотики.jpg","","",""]
],
"options":{}}
!%/
|visibleName|Чем полезны грибы для человека|
|ссылка на контент шага|https://youtu.be/e1TsC_Zfo4g|
|тип шага|video|
|visibleName|Полезные грибы|
|ссылка на контент шага|./environment/task_32-1/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_33_1.jpg|
|тип шага|pager|
|visibleName|Дрожжи|
|ссылка на контент шага|./environment/JPG/text_33_2.jpg|
|тип шага|pager|
|visibleName|Съедобные грибы|
|ссылка на контент шага|./environment/JPG/text_33_3.jpg|
|тип шага|pager|
|visibleName|Другая польза грибов|
|ссылка на материал|./environment/PDF/33-Чем_полезны_грибы_для_человека-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1 Мб|
|ссылка на материал|./environment/PDF_2/33-Чем_полезны_грибы_для_человека-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|108 Кб|
|visibleName||
|galleryFolder|./environment/galleries/34. Чем опасны грибы для человека/|
<<lessonAdminPanel>>/%
!!!Описание
Грибы живут не&nbsp;только в&nbsp;почве. Одни поселяются в&nbsp;листьях растений, другие&nbsp;&mdash; в&nbsp;продуктах, а&nbsp;третьи&nbsp;&mdash; в&nbsp;человеческой коже! И&nbsp;растения, и&nbsp;продукты, и&nbsp;люди от&nbsp;этого страдают. Мы&nbsp;обсудим, как не&nbsp;заболеть грибковой болезнью и&nbsp;не&nbsp;пострадать от&nbsp;ядовитых грибов.
!%//%
!gallery data
{"data":[
	["01 «вредный» гриб.jpg","«Вредный» гриб","",""],
	["02 бледная поганка.jpg","","",""],
	["03 бледная поганка.jpg","","https://www.flickr.com/photos/ressaure/6580918185/","Tatiana Bulyonkova"],
	["04 сатанинский гриб.jpg","","",""],
	["05 сатанинский гриб.jpg","","https://yadi.sk/a/A4X1I57P3WAjWx/5affa298f8f7acf4e450f856","vitaly.griboved"],
	["06 сатанинский гриб.jpg","","https://yadi.sk/a/A4X1I57P3WAjWx/5affa298f8f7acf4e450f846","vitaly.griboved"],
	["07 мучнистая роса.jpg","","https://www.flickr.com/photos/kubina/1896384858/","Jeff Kubina"],
	["08 мучнистая роса.jpg","","https://en.wikipedia.org/wiki/File:Powdery_mildew.JPG","Pollinator"],
	["09 мучнистая роса на клубнике.jpg","","",""],
	["10 пыльная головня.jpg","","https://commons.wikimedia.org/wiki/File:Charbon_nu.jpg","Sylvie Jacquin"],
	["11 пыльная головня.jpg","","https://www.flickr.com/photos/cimmyt/5123744887","International Maize and Wheat Improvement Center"],
	["12 здоровая кукуруза.jpg","","",""],
	["13 пыльная головня на кукурузе.jpg","","",""],
	["14 линейная ржавчина.jpg","","https://www.flickr.com/photos/cimmyt/5809539566","International Maize and Wheat Improvement Center"],
	["15 спорынья.jpg","","",""],
	["16 спорынья.jpg","","https://commons.wikimedia.org/wiki/File:Bromus_erectus_ergot.JPG","Claude De Brauer"],
	["17 трутовик.jpg","","https://www.flickr.com/photos/jessaerons/27434090763/","Pavel Starikov"],
	["18 трутовик.jpg","","https://www.flickr.com/photos/ressaure/4793352429/","Tatiana Bulyonkova"],
	["19 трутовик.jpg","","",""],
	["20 грибковая болезнь.jpg","","",""],
	["21 плесень.jpg","","",""]
],
"options":{}}
!%/
|visibleName|Чем опасны грибы для человека|
|ссылка на контент шага|https://youtu.be/yAhRdnD-n8A|
|тип шага|video|
|visibleName|Грибковые болезни растений|
|ссылка на контент шага|./environment/task_33-1/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_34_1.jpg|
|тип шага|pager|
|visibleName|Опасные грибы|
|ссылка на контент шага|./environment/JPG/text_34_2.jpg|
|тип шага|pager|
|visibleName|Грибковые болезни|
|ссылка на материал|./environment/PDF/34-Чем_опасны_грибы_для_человека-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,1 Мб|
|ссылка на материал|./environment/PDF_2/34-Чем_опасны_грибы_для_человека-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|199 Кб|
|visibleName||
|galleryFolder|./environment/galleries/35. Роль грибов в природе/|
<<lessonAdminPanel>>/%
!!!Описание
На&nbsp;этом уроке вы&nbsp;узнаете, что за&nbsp;невидимые лесные дворники убирают опавшие листья и&nbsp;тела умерших животных и&nbsp;почему подберёзовики так любят расти под берёзами.
!%//%
!gallery data
{"data":[
	["01 роль грибов в природе.jpg","","",""],
	["02 грибы всеядны.jpg","","",""],
	["03 как гриб питается.jpg","","",""],
	["04 лист упал.jpg","","",""],
	["05 гриб переваривает лист.jpg","","",""],
	["06 лист превратился в перегной.jpg","","",""],
	["07 дворник ест листья.jpg","","",""],
	["08 мусор в лесу.jpg","","",""],
	["09 гриб и бактерия дворники.jpg","","",""],
	["10 гриб делится с деревом водой.jpg","","",""],
	["11 дерево делится с грибом пищей.jpg","","",""],
	["12 симбиоз гриба и дерева.jpg","","https://fotki.yandex.ru/next/users/woodmen19/album/100928/view/671055","Владимир Брюхов"],
	["13 симбиоз гриба и дерева.jpg","","",""]
],
"options":{}}
!%/
|visibleName|Роль грибов в&nbsp;природе|
|ссылка на контент шага|https://youtu.be/Xe6QOFIWTHU|
|тип шага|video|
|ссылка на контент шага|./environment/task_34-3/index.html|
|тип шага|task|
|visibleName|Грибы|
|ссылка на контент шага|./environment/JPG/text_35_1.jpg|
|тип шага|pager|
|visibleName|Грибы-дворники|
|ссылка на контент шага|./environment/JPG/text_35_2.jpg|
|тип шага|pager|
|visibleName|Дружба гриба и&nbsp;дерева|
|ссылка на материал|./environment/PDF/35-Роль_грибов_в_природе-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|514 Кб|
|ссылка на материал|./environment/PDF_2/35-Роль_грибов_в_природе-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|223 Кб|
|visibleName||
|galleryFolder|./environment/galleries/36. Знакомство с бактериями/|
<<lessonAdminPanel>>/%
!!!Описание
Мы&nbsp;переходим в&nbsp;последнее царство мира живого&nbsp;&mdash; царство бактерий. Его крошечные жители поставили сразу несколько мировых рекордов. На&nbsp;этом уроке мы&nbsp;перечислим их&nbsp;и&nbsp;наградим бактерий заслуженными медалями.
!%//%
!gallery data
{"data":[
	["01 бактерия.jpg"],
	["02 древний пейзаж Земли.jpg"],
	["03 гейзер.jpg"],
	["04 кислотное озеро.jpg"],
	["05 космос.jpg"],
	["06 Левенгук и микроскоп.jpg"],
	["07 Левенгук и микроскоп.jpg"],
	["08 современный ученый и микроскоп.jpg"],
	["09 ложка почвы.jpg"],
	["10 питание бактерии.jpg"],
	["11 резиновая шина.jpg"],
	["12 лес и органика.jpg"],
	["13 лес и пластик.jpg"],
	["14 бактерии кокки.jpg"],
	["15 бактерии стрептококки.jpg"],
	["16 бактерии стафилококки.jpg"],
	["17 бактерии палочки.jpg"],
	["18 бактерия спирилла.jpg"]
],
"options":{}}
!%/
|visibleName|Знакомство с&nbsp;бактериями|
|ссылка на контент шага|https://youtu.be/Fw6HPlfG88s|
|тип шага|video|
|visibleName|Достижения бактерий|
|ссылка на контент шага|./environment/task_35-1/index.html|
|тип шага|task|
|visibleName|Формы бактерий|
|ссылка на контент шага|./environment/task_35-3/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_36_1.jpg|
|тип шага|pager|
|visibleName|Достижения бактерий, часть&nbsp;1|
|ссылка на контент шага|./environment/JPG/text_36_2.jpg|
|тип шага|pager|
|visibleName|Достижения бактерий, часть&nbsp;2|
|ссылка на контент шага|./environment/JPG/text_36_3.jpg|
|тип шага|pager|
|visibleName|Формы бактерий|
|ссылка на материал|./environment/PDF/36-Знакомство_с_бактериями-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1 Мб|
|ссылка на материал|./environment/PDF_2/36-Знакомство_с_бактериями-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|155 Кб|
|visibleName||
|galleryFolder|.//environment/galleries/37. Чем полезны и опасны бактерии для человека/|
<<lessonAdminPanel>>/%
!!!Описание
Одни бактерии вызывают болезни, а&nbsp;другие помогают их&nbsp;лечить. Одни портят наши продукты, а&nbsp;другие, наоборот, делают их&nbsp;ещё вкуснее!
!%//%
!gallery data
{"data":[
	["01 вредная бактерия.jpg"],
	["02 полезная бактерия.jpg"],
	["03 бактерия-повар.jpg"],
	["04 молоко.jpg"],
	["05 кисломолочные продукты и молоко.jpg"],
	["06 бактерия-дворник.jpg"],
	["07 бактерия-фармацевт.jpg"],
	["08 инсулин.jpg"],
	["09 кишечник.jpg"],
	["10 бактерии в кишечнике.jpg"],
	["11 болеющий мальчик.jpg"],
	["12 антибиотики.jpg"],
	["13 глисты в кишечнике.jpg"],
	["14 Айболит.jpg"],
	["15 суп.jpg"],
	["16 суп испортился.jpg"],
	["17 молоко.jpg"],
	["18 молоко скисло.jpg"],
	["19 мясо.jpg"],
	["20 мясо испортилось.jpg"],
	["21 холодильник.jpg"],
	["22 холодильник.jpg"],
	["23 грязные руки.jpg"],
	["24 бактерия замёрзла.jpg"],
	["25 бактерия спит.jpg"],
	["26 мытьё рук.jpg"],
	["27 мытьё фруктов.jpg"]
],
"options":{}}
!%/
|visibleName|Чем полезны и&nbsp;опасны бактерии для человека|
|ссылка на контент шага|https://youtu.be/Cas0yGMpDtU|
|тип шага|video|
|ссылка на контент шага|./environment/task_36-2/index.html|
|тип шага|task|
|visibleName|Польза бактерий|
|ссылка на контент шага|./environment/JPG/text_37_1.jpg|
|тип шага|pager|
|visibleName|Бактерии-повара и&nbsp;бактерии-дворники|
|ссылка на контент шага|./environment/JPG/text_37_2.jpg|
|тип шага|pager|
|visibleName|Бактерии-соседи и&nbsp;бактерии-фармацевты|
|ссылка на контент шага|./environment/JPG/text_37_3.jpg|
|тип шага|pager|
|visibleName|Чем опасны бактерии для человека|
|ссылка на материал|./environment/PDF/37-Чем_полезны_и_опасны_бактерии_для_человека-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|899 Кб|
|ссылка на материал|./environment/PDF_2/37-Чем_полезны_и_опасны_бактерии_для_человека-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|258 Кб|
|visibleName||
|galleryFolder|.//environment/galleries/38. Роль бактерий в природе/|
<<lessonAdminPanel>>/%
!!!Описание
Вы&nbsp;уже знаете, что бактерии прибираются в&nbsp;природе вместе с&nbsp;грибами. Но&nbsp;это не&nbsp;единственная их&nbsp;роль в&nbsp;природе.
!%//%
!gallery data
{"data":[
	["01 бактерия.jpg","","",""],
	["02 полезная бактерия.jpg","","",""],
	["03 вредная бактерия.jpg","","",""],
	["04 древний пейзаж Земли.jpg","","",""],
	["05 бактерии в природе.jpg","","",""],
	["06 питание бактерии.jpg","","",""],
	["07 земляника.jpg","","",""],
	["08 антибиотики.jpg","","",""],
	["09 гриб и бактерия.jpg","","",""],
	["10 горох.jpg","","https://www.flickr.com/photos/54912928@N06/5087112309/in","Isabel Eyre"],
	["11 горох.jpg","","",""],
	["12 бактерии.jpg","","",""],
	["13 горох и бактерия.jpg","","",""],
	["14 болеющий мальчик.jpg","","",""],
	["15 врач.jpg","","",""],
	["16 губка.jpg","","",""],
	["17 двустворчатый моллюск.jpg","","",""],
	["18 цианобактерии и фотосинтез.jpg","","",""],
	["19 цианобактерии.jpg","","",""],
	["20 цианобактерия.jpg","","https://www.flickr.com/photos/jimmysymons/15636345407/","Jimmy - S"],
	["21 пищевая цепочка.jpg","","",""]
],
"options":{}}
!%/
|visibleName|Роль бактерий в&nbsp;природе|
|ссылка на контент шага|https://youtu.be/bs00slmUEb8|
|тип шага|video|
|visibleName|Роли грибов и&nbsp;бактерий|
|ссылка на контент шага|./environment/task_37-1/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/task_37-3/index.html|
|тип шага|task|
|visibleName|Бактерии|
|ссылка на контент шага|./environment/JPG/text_38_1.jpg|
|тип шага|pager|
|visibleName|Роль бактерий в&nbsp;природе|
|ссылка на контент шага|./environment/JPG/text_38_2.jpg|
|тип шага|pager|
|visibleName|Цианобактерии|
|ссылка на материал|./environment/PDF/38-Роль_бактерий_в_природе-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|486 Кб|
|ссылка на материал|./environment/PDF_2/38-Роль_бактерий_в_природе-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|222 Кб|
|visibleName||
|galleryFolder|./environment/galleries/39. Лишайники/|
<<lessonAdminPanel>>/%
!!!Описание
На&nbsp;нашем острове осталась ещё одна точка, в&nbsp;которой мы&nbsp;пока не&nbsp;были&nbsp;&mdash; Город лишайников. На&nbsp;этом уроке мы&nbsp;зайдём в&nbsp;него и&nbsp;узнаем, как лишайники устроены, чем они полезны людям и&nbsp;что означает научное слово &laquo;симбиоз&raquo;.
!%//%
!gallery data
{"data":[
	["01 гриб и цианобактерия.jpg","","",""],
	["02 мицелий и цианобактерии.jpg","","",""],
	["03 цианобактерии и фотосинтез.jpg","","",""],
	["04 симбиоз дерева и грибов.jpg","","",""],
	["05 симбиоз человека и бактерий.jpg","","",""],
	["06 кустистый лишайник.jpg","","",""],
	["07 кустистый лишайник.jpg","","https://www.flickr.com/photos/wild_attributes/9605479820/","Bob Danley"],
	["08 листоватый лишайник.jpg","","",""],
	["09 листоватый лишайник.jpg","","https://www.flickr.com/photos/imbala/2422204158/","imbala"],
	["10 накипной лишайник.jpg","","",""],
	["11 накипной лишайник.jpg","","https://www.flickr.com/photos/openspacer/11842324086/","alice cummings"],
	["12 накипной лишайник.jpg","","https://www.flickr.com/photos/benetd/134314157/","benet2006"],
	["13 лишайниковая манна.jpg","","https://www.flickr.com/photos/copepodo/3548721256/in/","Rafael Medina"],
	["14 библейская манна.jpg","","https://www.flickr.com/photos/ergsart/22277677112/","Art Gallery ErgsArt - by ErgSap"],
	["15 манна и пустыня.jpg","","",""],
	["16 цетрария.jpg","","https://www.flickr.com/photos/cladoniophile/7331793694/","Brian Eversham"],
	["17 северный олень.jpg","","",""],
	["18 северный олень ест ягель.jpg","","",""],
	["19 цветной лишайник.jpg","","https://www.flickr.com/photos/zoltan/5072867643/","Zoltan Bartalis"],
	["20 лишайник для лакмуса.jpg","","https://www.flickr.com/photos/107551605@N04/13008957623/","Peter Keightley"],
	["21 раствор лакмуса.jpg","","",""],
	["22 покрасневший раствор лакмуса.jpg","","",""],
	["23 лишайник на камне.jpg","","https://www.flickr.com/photos/generated/6168124412/","Jared Tarbell"],
	["24 лишайник на заборе.jpg","","https://www.flickr.com/photos/notacowgirl/3973834716/","linda stich"],
	["25 лишайник в северной почве.jpg","","https://www.flickr.com/photos/carstonc/6978551701/","Carston Curd"],
	["26 лишайники на скале.jpg","","",""]
],
"options":{}}
!%/
|visibleName|Лишайники|
|ссылка на контент шага|https://youtu.be/Exd0fXqNVJM|
|тип шага|video|
|visibleName|Польза лишайников|
|ссылка на контент шага|./environment/task_38-2/index.html|
|тип шага|task|
|visibleName|Симбиоз|
|ссылка на контент шага|./environment/task_38-4/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_39_1.jpg|
|тип шага|pager|
|visibleName|Кто такие лишайники|
|ссылка на контент шага|./environment/JPG/text_39_2.jpg|
|тип шага|pager|
|visibleName|Жизненные формы лишайников|
|ссылка на контент шага|./environment/JPG/text_39_3.jpg|
|тип шага|pager|
|visibleName|Значение лишайников|
|ссылка на материал|./environment/PDF/39-Лишайники-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,1 Мб|
|ссылка на материал|./environment/PDF_2/39-Лишайники-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|267 Кб|
|ссылка на материал|./environment/PDF/03-Царства_живой_природы-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|345 Кб|
|ссылка на материал|./environment/PDF_2/03-Царства_живой_природы-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|116 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/04. Признаки животных/|
!!!Описание
Наше путешествие по&nbsp;миру живого начнётся с&nbsp;царства животных. Давайте разберёмся, что общего у&nbsp;жителей этого царства.
!Дополнительно об уроке

!gallery data
{"data":[
	["01 лев питается другими животными.jpg"],
	["02 корова питается растениями.jpg"],
	["03 губка питается бактериями.jpg"],
	["04 животные питаются представителями всех царств.jpg"],
	["05 животные активно двигаются.jpg"],
	["06 животные растут не всю жизнь.jpg"]
],
"options":{}}
!%/
|ссылка на контент шага|https://youtu.be/-HFuePqtadM|
|visibleName|Признаки животных|
|тип шага|video|
|ссылка на контент шага|./environment/task_04-1/index.html|
|тип шага|task|
|visibleName|Признаки животных|
|visibleName|Признаки животных и&nbsp;признаки живого|
|ссылка на контент шага|./environment/task_04-2/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_04_1.jpg|
|тип шага|pager|
|visibleName|Признаки животных|
|table of contents thumb|text_04_1.jpg|
|visibleName||
|galleryFolder|./environment/galleries/40. Вирусы/|
<<lessonAdminPanel>>/%
!!!Описание
Что это за&nbsp;организмы, да&nbsp;и&nbsp;организмы&nbsp;ли это вообще? Где они на&nbsp;нашей карте? Ведь мы&nbsp;уже обошли все царства и&nbsp;даже город лишайников!
!%//%
!gallery data
{"data":[
	["01 вирус.jpg","","",""],
	["02 книга вируса.jpg","","",""],
	["03 клетка.jpg","","",""],
	["04 нос.jpg","","",""],
	["05 ветка.jpg","","",""],
	["06 клетка.jpg","","",""],
	["07 клетка и вирус.jpg","","",""],
	["08 клетка и вирус.jpg","","",""],
	["09 клетка.jpg","","",""],
	["10 признаки вирусов.jpg","","",""],
	["11 признаки вирусов.jpg","","",""],
	["12 вред вирусов.jpg","","",""],
	["13 грипп.jpg","","https://www.flickr.com/photos/sanofi-pasteur/5284032560/","Sanofi Pasteur"],
	["14 ветряная оспа.jpg","","",""],
	["15 корь.jpg","","https://www.flickr.com/photos/sanofi-pasteur/5279798333/in/album-72157625526694383/","Sanofi Pasteur"],
	["16 краснуха.jpg","","https://www.flickr.com/photos/sanofi-pasteur/5280404370/in/album-72157625526694383/","Sanofi Pasteur"],
	["17 прививка.jpg","","",""],
	["18 больная корова.jpg","","",""],
	["19 больная корова.jpg","","",""],
	["20 полезный вирус.jpg","","",""],
	["21 бактериофаг.jpg","","https://commons.wikimedia.org/wiki/File:Phage.jpg","Dr Graham Beards"],
	["22 бактериофаги в ампуле.jpg","","",""],
	["23 аптека.jpg","","",""],
	["24 бактериофаг.jpg","","",""],
	["25 остров вирусов.jpg","","",""]
],
"options":{}}
!%/
|visibleName|Вирусы|
|ссылка на контент шага|https://youtu.be/VeHKft7ey9s|
|тип шага|video|
|ссылка на контент шага|./environment/task_39-1/index.html|
|тип шага|task|
|visibleName|Признаки вирусов|
|ссылка на контент шага|./environment/JPG/text_40_1.jpg|
|тип шага|pager|
|visibleName|Признаки вирусов|
|ссылка на контент шага|./environment/JPG/text_40_2.jpg|
|тип шага|pager|
|visibleName|Жизнь вируса|
|ссылка на контент шага|./environment/JPG/text_40_3.jpg|
|тип шага|pager|
|visibleName|Чем вирусы опасны и&nbsp;полезны для человека|
|ссылка на материал|./environment/PDF/40-Вирусы-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|762 Кб|
|ссылка на материал|./environment/PDF_2/40-Вирусы-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|236 Кб|
|visibleName||
|galleryFolder|./environment/galleries/41. Природные сообщества/|
<<lessonAdminPanel>>/%
!!!Описание
На&nbsp;нашей карте организмы разделены на&nbsp;царства. Но&nbsp;ведь в&nbsp;природе они перемешаны! Мы&nbsp;начинаем разговор о&nbsp;природных сообществах: о&nbsp;том, какие растения, животные, бактерии и&nbsp;грибы живут вместе и&nbsp;как они зависят друг от&nbsp;друга.
!%//%
!gallery data
{"data":[
	["01 заяц.jpg"],
	["02 волк.jpg"],
	["03 бегемот.jpg"],
	["04 акула.jpg"],
	["05 ёж.jpg"],
	["06 осьминог.jpg"],
	["07 приспособление к воде.jpg"],
	["08 приспособление к пустыне.jpg"],
	["09 приспособление к пустыне.jpg"],
	["10 приспособление к полету.jpg"],
	["11 приспособление к копанию.jpg"],
	["12 соседство волка и зайца.jpg"],
	["13 зайцы в лесу.jpg"],
	["14 волки и зайцы в лесу.jpg"],
	["15 волки в лесу.jpg"],
	["16 равновесие.jpg"],
	["17 равновесие.jpg"],
	["18 фотосинтез.jpg"],
	["19 цепь питания.jpg"],
	["20 цепь питания.jpg"],
	["21 цепь питания.jpg"],
	["22 звенья пищевой цепи.jpg"],
	["23 взаимосвязь организмов.jpg"],
	["24 взаимосвязь организмов.jpg"],
	["25 дедушка лесник.jpg"],
	["26 сова.jpg"],
	["27 мышь.jpg"],
	["28 мыши.jpg"],
	["29 шмели.jpg"],
	["30 шмель.jpg"],
	["31 клевер.jpg"],
	["32 клевер.jpg"],
	["33 корова.jpg"],
	["34 сказка о сове.jpg"],
	["35 лесное сообщество.jpg"],
	["36 сообщество озера.jpg"]
],
"options":{}}
!%/
|visibleName|Природные сообщества|
|ссылка на контент шага|https://youtu.be/dA_zoGlNUR0|
|тип шага|video|
|тип шага|task|
|ссылка на контент шага|./environment/task_40-2/index.html|
|visibleName|Пищевая цепь|
|ссылка на контент шага|./environment/JPG/text_41_1.jpg|
|тип шага|pager|
|visibleName|Что такое сообщество|
|ссылка на контент шага|./environment/JPG/text_41_2.jpg|
|тип шага|pager|
|visibleName|Цепи питания|
|ссылка на материал|./environment/PDF/41-Природные_сообщества-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|2,8 Мб|
|ссылка на материал|./environment/PDF_2/41-Природные_сообщества-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|97 Кб|
|visibleName|42. Сообщество леса|
|galleryFolder|./environment/galleries/42. Сообщество леса/|
<<lessonAdminPanel>>/%
!!!Описание
Лес&nbsp;&mdash; это одно из&nbsp;природных сообществ. Ведь он&nbsp;состоит не&nbsp;только из&nbsp;деревьев: в&nbsp;нём много других растений, в&nbsp;нём живут птицы и&nbsp;звери, растут грибы. Мы&nbsp;поговорим о&nbsp;том, из&nbsp;каких этажей состоит лес, какие леса бывают и&nbsp;чем они полезны для человека.
!%//%
!gallery data
{"data":[
	["01 лес.jpg"],
	["02 хвойный лес.jpg"],
	["03 лиственный лес.jpg"],
	["04 березняк.jpg"],
	["05 берёзы.jpg"],
	["06 ельник.jpg"],
	["07 ели.jpg"],
	["08 сосняк, бор.jpg"],
	["09 сосны.jpg"],
	["10 дубрава.jpg"],
	["11 буковый лес.jpg"],
	["12 бук.jpg"],
	["13 смешанный лес.jpg"],
	["14 ярусы леса.jpg"],
	["15 папоротники.jpg"],
	["16 кустарники.jpg"],
	["17 кусты.jpg"],
	["18 черника и брусника.jpg"],
	["19 трутовик.jpg"],
	["20 птицы лесного сообщества.jpg"],
	["21 подберёзовик.jpg"],
	["22 дом и дрова.jpg"],
	["23 бумага книги.jpg"],
	["24 лак для дерева.jpg"],
	["25 лесные полосы.jpg"],
	["27 отдых в лесу.jpg"],
	["28 фотосинтез и лес.jpg"]
],
"options":{}}
!%/
|visibleName|Сообщество леса|
|ссылка на контент шага|https://youtu.be/AISfmBo4HL0|
|тип шага|video|
|visibleName|Виды лесов|
|ссылка на контент шага|./environment/task_41-1/index.html|
|тип шага|task|
|visibleName|Лесные этажи|
|ссылка на контент шага|./environment/JPG/text_42_1.jpg|
|тип шага|pager|
|visibleName|Виды лесов|
|ссылка на контент шага|./environment/JPG/text_42_2.jpg|
|тип шага|pager|
|visibleName|Чем леса полезны для человека|
|ссылка на контент шага|./environment/JPG/text_42_3.jpg|
|тип шага|pager|
|ссылка на материал|./environment/PDF/42-Сообщество_леса-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,3 Мб|
|ссылка на материал|./environment/PDF_2/42-Сообщество_леса-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|179 Кб|
|visibleName||
|galleryFolder|./environment/galleries/43. Охрана лесных сообществ/|
<<lessonAdminPanel>>/%
!!!Описание
Как мы&nbsp;выяснили на&nbsp;прошлом уроке, леса приносят большую пользу. Поэтому люди стараются защитить их&nbsp;от&nbsp;опасностей. Что это за&nbsp;опасности и&nbsp;как с&nbsp;ними бороться, мы&nbsp;и&nbsp;обсудим на&nbsp;уроке.
!%//%
!gallery data
{"data":[
	["01 карта леса.jpg"],
	["02 разведение костра.jpg"],
	["03 разведение костра.jpg"],
	["04 разведение костра.jpg"],
	["05 разведение костра.jpg"],
	["06 браконьер.jpg"],
	["07 браконьер за решеткой.jpg"],
	["08 лесные полосы.jpg"],
	["09 лесной склон.jpg"]
],
"options":{}}
!%/
|visibleName|Охрана лесных сообществ|
|ссылка на контент шага|https://youtu.be/1TBnpydKNsg|
|тип шага|video|
|visibleName|Специалисты по&nbsp;лесу|
|ссылка на контент шага|./environment/task_42-3/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_43_1.jpg|
|тип шага|pager|
|visibleName|Охрана лесов от&nbsp;огня|
|ссылка на контент шага|./environment/JPG/text_43_2.jpg|
|тип шага|pager|
|visibleName|Охрана лесов от&nbsp;насекомых и&nbsp;от&nbsp;охотников|
|ссылка на материал|./environment/PDF/43-Охрана_лесных_сообществ-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|500 Кб|
|ссылка на материал|./environment/PDF_2/43-Охрана_лесных_сообществ-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|145 Кб|
|visibleName||
|galleryFolder|./environment/galleries/44. Сообщество луга/|
<<lessonAdminPanel>>/%
!!!Описание
Как и&nbsp;лес, лег&nbsp;&mdash; это сложно устроенное сообщество со&nbsp;своими этажами и&nbsp;цепями питания.
!%//%
!gallery data
{"data":[
	["01 тимофеевка.jpg","","https://www.flickr.com/photos/pelayobotanica/16373280929/","Javier Pelayo"],
	["02 ежа.jpg","","https://www.flickr.com/photos/14230388@N03/3533383972/","Bob Osborn"],
	["03 донник.jpg","","https://www.flickr.com/photos/134727273@N06/23167786625/","Takashi Hoshide"],
	["04 клевер.jpg","","https://www.flickr.com/photos/tommyhaga/7326661890/","TommyHAGA"],
	["05 подмаренник.jpg","","https://commons.wikimedia.org/wiki/File:Vall%C3%A9e_du_Marcadau_95.JPG","Guérin Nicolas"],
	["06 зверобой.jpg","","https://www.flickr.com/photos/mike_page_gallery/4586460820/in","Mike Page"],
	["07 звездчатка.jpg","","https://www.flickr.com/photos/iainmclauchlan/5653438520/","Iain McLauchlan"],
	["08 вьюнок.jpg","","https://www.flickr.com/photos/ang1852/9385796354/","Angela"],
	["09 горошек.jpg","","https://www.flickr.com/photos/stephenbuchan/6085372278/","Stephen Buchan"],
	["10 равновесие.jpg","","",""],
	["11 цепь питания.jpg","","",""],
	["12 покусанный лист.jpg","","https://www.flickr.com/photos/laurenjacobsen/4891568739/","laurenjacobsen"],
	["13 улитка.jpg","","https://www.flickr.com/photos/tamaki/1004370/in","Yamanaka Tamaki"],
	["14 гусеница.jpg","","https://www.flickr.com/photos/37957896@N03/7119787831/in","Wolfgang Walz Hillermann"],
	["15 жук листоед.jpg","","https://www.flickr.com/photos/42998647@N07/16654293337/","Simon Lai"],
	["16 кобылка.jpg","","https://www.flickr.com/photos/sanmartin/5012159699/in","Gilles San Martin"],
	["17 скворец.jpg","","https://www.flickr.com/photos/114781512@N02/15855812119/in","Peanut1371"],
	["18 воробей.jpg","","https://www.flickr.com/photos/jayyeung71/2222984790/in","jay yeung"],
	["19 коростель.jpg","","https://www.flickr.com/photos/68769579@N07/14161660807/in","Stevie Smith"],
	["20 сокол.jpg","","https://www.flickr.com/photos/macngaleria/18700599512/","macn galeria"],
	["21 сова.jpg","","https://www.flickr.com/photos/rick_leche/388569179/","Rick Leche - Photography"],
	["22 клевер и шмели.jpg","","",""],
	["23 пчелы.jpg","","",""],
	["24 шмель.jpg","","",""],
	["25 бабочка.jpg","","",""],
	["26 муха.jpg","","",""],
	["27 жук.jpg","","",""],
	["28 сено.jpg","","https://www.flickr.com/photos/92867842@N03/15000717586/","aine ni giolla phadraig"],
	["29 поле.jpg","","",""],
	["30 рожь.jpg","","https://www.flickr.com/photos/weiswaldemar/14442719421/in","Waldemar Weiss"],
	["31 овёс.jpg","","https://www.flickr.com/photos/bolandfamily0621/17120524061/in","Brad Boland"],
	["32 пшеница.jpg","","https://www.flickr.com/photos/vladimirf/4874830533/in/","KeksKlip"],
	["33 луг.jpg","","",""]
],
"options":{}}
!%/
|visibleName|Сообщество луга|
|ссылка на контент шага|https://youtu.be/0TAswk5QCz0|
|тип шага|video|
|visibleName|Растения луга|
|ссылка на контент шага|./environment/task_43-1/index.html|
|тип шага|task|
|visibleName|Сообщество луга|
|ссылка на контент шага|./environment/JPG/text_44_1.jpg|
|тип шага|pager|
|ссылка на материал|./environment/PDF/44-Сообщество_луга-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|367 Кб|
|ссылка на материал|./environment/PDF_2/44-Сообщество_луга-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|192 Кб|
|visibleName||
|galleryFolder|./environment/galleries/45. Сообщество озера/|
<<lessonAdminPanel>>/%
!!!Описание
Мы&nbsp;познакомимся с&nbsp;ещё одним типом природных сообществ и&nbsp;обсудим, что общего у&nbsp;всех водных жителей, какими способами можно охотиться в&nbsp;озере и&nbsp;почему озёра важны для людей.
!%//%
!gallery data
{"data":[
	["01 сообщество озера.jpg","","",""],
	["02 ласты.jpg","","",""],
	["03 морская черепаха.jpg","","",""],
	["04 весло.jpg","","",""],
	["05 жук-плавунец.jpg","","",""],
	["06 акула.jpg","","",""],
	["07 торпеда.jpg","","",""],
	["08 дафния.jpg","","",""],
	["09 жабры рыбы.jpg","","",""],
	["10 улитка прудовик.jpg","","",""],
	["11 жабры рыбы.jpg","","",""],
	["12 рак.jpg","","",""],
	["13 личинка стрекозы.jpg","","",""],
	["14 моллюск.jpg","","",""],
	["15 губка.jpg","","",""],
	["16 бадяга.jpg","","https://www.flickr.com/photos/qubsoutreach/5915229514/","Queen's University Biological Station Outreach"],
	["17 водоросли.jpg","","",""],
	["18 улотрикс.jpg","","https://commons.wikimedia.org/wiki/File:Spyrogyra-bgiu.jpg","Bogdan"],
	["19 спирогира.jpg","","www.shrimp-tank.com","ShrimpTank"],
	["20 элодея.jpg","","https://www.flickr.com/photos/monikalaplante/6026456315/","Monika LaPlante"],
	["21 ряска.jpg","","https://www.flickr.com/photos/celestacey/5574988705/","celestacey"],
	["22 ряска.jpg","","https://www.flickr.com/photos/aeschylus18917/5616658183/","Daniel Ruyle"],
	["23 кувшинка.jpg","","https://www.flickr.com/photos/henkmulder/29363237187/in/","Henk Mulder"],
	["24 кубышка.jpg","","https://www.flickr.com/photos/92740970@N03/16205464470/in","Zi W"],
	["25 кувшинка в воде.jpg","","",""],
	["26 катушка.jpg","","https://www.needpix.com/photo/11547/aquarium-snail-planorbarius-corneus-animals-free-photos-free-images","Beeki"],
	["27 прудовик.jpg","","https://commons.wikimedia.org/wiki/File:Water_snail_Rex_2.jpg","Rex / Bart Slingerland"],
	["28 карп.jpg","","https://www.flickr.com/photos/cas_docents/4663516705/","Ron DeCloux"],
	["29 толстолобик.jpg","","http://www.hlasek.com/aristichthys_nobilis1pl.html","lubomir hlasek"],
	["30 окунь.jpg","","https://commons.wikimedia.org/wiki/File:PercheCommune.jpg","Dgp.martin"],
	["31 щука.JPG","","https://commons.wikimedia.org/wiki/File:Esox_Lucius.JPG","Georg Mittenecker"],
	["32 стрекоза.jpg","","",""],
	["33 цепь питания.jpg","","",""],
	["34 стакан воды.jpg","","",""],
	["35 водохранилище.jpg","","https://www.flickr.com/photos/qonzo/15464275099/","qonzo"],
	["36 рыбалка.jpg","","https://www.flickr.com/photos/metroparks/10460789386/","fiveriversmetroparks"],
	["37 озеро.jpg","","https://www.flickr.com/photos/sweet_over_photos/9774111385/","Olga Kruglova"]
],
"options":{}}
!%/
|visibleName|Сообщество озера|
|ссылка на контент шага|https://youtu.be/97glHLgJclE|
|тип шага|video|
|ссылка на контент шага|./environment/task_44-1/index.html|
|тип шага|task|
|visibleName|Обитатели озера|
|visibleName|Сообщество озера|
|ссылка на контент шага|./environment/JPG/text_45_1.jpg|
|тип шага|pager|
|ссылка на материал|./environment/PDF/45-Сообщество_озера-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|393 Кб|
|ссылка на материал|./environment/PDF_2/45-Сообщество_озера-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|95 Кб|
|visibleName||
|galleryFolder|./environment/galleries/46. Охрана природы/|
<<lessonAdminPanel>>/%
!!!Описание
Человек с&nbsp;давних времён берёт у&nbsp;природы&nbsp;то, что ему нужно. Например, вспахивает поле там, где был лес, и&nbsp;луговые жители остаются без дома. Мы&nbsp;обсудим, как учёные и&nbsp;инженеры стараются защитить природу и&nbsp;как в&nbsp;этом деле можете поучаствовать&nbsp;вы.
!%//%
!gallery data
{"data":[
	["01 гнездо и птица.jpg","","",""],
	["02 зима.jpg","","https://www.flickr.com/photos/lharkness/2240026440/","Lee Harkness"],
	["03 ураган.jpg","","https://www.flickr.com/photos/derscheuch/15227579768/","Oliver Scheuch"],
	["04 засуха.jpg","","https://www.flickr.com/photos/beritcrab/1564053568/in","Berit Barton"],
	["05 саранча.jpg","","https://www.flickr.com/photos/131782374@N03/27281774750/","Вести Детально"],
	["06 цепь питания.jpg","","",""],
	["07 гнездо и птица.jpg","","",""],
	["08 лес.jpg","","",""],
	["09 вырубленный лес.jpg","","",""],
	["10 луг.jpg","","",""],
	["11 поле.jpg","","",""],
	["12 учёные.jpg","","",""],
	["13 красная книга.jpg","","",""],
	["14 браконьер.jpg","","",""],
	["15 браконьер за решеткой.jpg","","",""],
	["16 стеллерова корова.jpg","","",""],
	["17 бизон.jpg","","https://www.flickr.com/photos/tdino/5988529384/","Dean Taylor"],
	["18 зубр.jpg","","https://commons.wikimedia.org/wiki/File:Bison_bonasus_(Linnaeus_1758).jpg","Michael Gäbler"],
	["20 осушенное болото.jpg","","",""],
	["21 озеро.jpg","","",""],
	["22 загрязненное озеро.jpg","","",""],
	["23 загрязненная вода.jpg","","",""],
	["24 ноутбук.jpg","","",""],
	["25 ракета.jpg","","",""],
	["26 ученые.jpg","","",""],
	["27 карта заповедников.jpg","","",""],
	["28 баргузинский заповедник.jpg","","",""],
	["29 баргузинский соболь.jpg","","",""],
	["29 соболь в красной книге.jpg","","",""],
	["30 воронежский заповедник.jpg","","",""],
	["31 бобр.jpg","","",""],
	["32 воронежский заповедник.jpg","","http://zapovednik-vrn.ru/gallery/photo-gallery/priroda/pejzazhi/","Александр Мишин"],
	["33 бобровая плотина.jpg","","",""],
	["34 ольха и ива.jpg","","",""],
	["35 ольха.jpg","","",""],
	["36 ива.jpg","","",""]
],
"options":{}}
!%/
|visibleName|Охрана природы|
|ссылка на контент шага|https://youtu.be/VbhCvsbqwHo|
|тип шага|video|
|visibleName|Класс волчат|
|ссылка на контент шага|./environment/task_45-1/index.html|
|тип шага|task|
|visibleName|Охрана природы|
|ссылка на контент шага|./environment/task_45-2/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_46_1.jpg|
|тип шага|pager|
|visibleName|Охрана природы|
|ссылка на контент шага|./environment/JPG/text_46_2.jpg|
|тип шага|pager|
|visibleName|Красная книга|
|ссылка на материал|./environment/PDF/46-Охрана_природы-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|549 Кб|
|ссылка на материал|./environment/PDF_2/46-Охрана_природы-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|108 Кб|
|visibleName||
|galleryFolder|.//environment/galleries/47. Летние задания/|
<<lessonAdminPanel>>/%
!!!Описание
Летом изучать окружающий мир лучше всего. Правда, летом нет уроков, зато есть задание на&nbsp;каникулы.
Мы&nbsp;предложим несколько вариантов, а&nbsp;вы&nbsp;выберите самый интересный!
!%//%
!gallery data
{"data":[
	["01 страница гербария.jpg"],
	["02 инструменты для взятия образца почвы.jpg"],
	["03 выкапываем образец почвы.jpg"],
	["04 пакет с почвой.jpg"]
],
"options":{}}
!%/
|ссылка на контент шага|https://youtu.be/CWBjhT7FAgY|
|visibleName|Летние задания|
|тип шага|video|
|ссылка на контент шага|./environment/JPG/text_47_1.jpg|
|тип шага|pager|
|visibleName|Наблюдение за&nbsp;животными|
|ссылка на контент шага|./environment/JPG/text_47_2.jpg|
|тип шага|pager|
|visibleName|Коллекции сухих плодов и&nbsp;камней|
|ссылка на контент шага|./environment/JPG/text_47_3.jpg|
|тип шага|pager|
|visibleName|Коллекция почвы|
|ссылка на контент шага|./environment/JPG/text_47_4.jpg|
|тип шага|pager|
|visibleName|Гербарий|
|ссылка на материал|./environment/PDF/47-Летние_задания-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,2 Мб|
|ссылка на материал|./environment/PDF_2/47-Летние_задания-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|120 Кб|
|ссылка на материал|./environment/PDF/04-Признаки_животных-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|118 Кб|
|ссылка на материал|./environment/PDF_2/04-Признаки_животных-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|172 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/05. Медузы и губки/|
!!!Описание
Царство животных делится на&nbsp;две большие части. Мы&nbsp;начнём с&nbsp;беспозвоночных животных&nbsp;&mdash; то&nbsp;есть с&nbsp;тех, у&nbsp;кого нет внутреннего скелета. К&nbsp;ним относятся самые древние жители царства животных: медузы и&nbsp;их&nbsp;родственники.
!Дополнительно об уроке

!gallery data
{"data":[
	["01-1 позвоночное.jpg",null,null,null],
	["01-2 позвоночное — внутри кости.jpg",null,null,null],
	["02-1 беспозвоночное.jpg",null,null,null],
	["02-2 беспозвоночное — внутри костей нет.jpg",null,null,null],
	["03 «княжества» в царстве животных.jpg","«Княжества» в царстве животных",null,null],
	["04 медуза.jpg",null,null,null],
	["05 коралл.jpg",null,null,null],
	["05 коралловый полип крупно.jpg",null,null,null],
	["06 актиния.jpg",null,null,null],
	["07 губка.jpg",null,null,null],
	["07 губки 1.jpg",null,"https://www.flickr.com/photos/edbierman/4279628779/","Ed Bierman"],
	["07 губки 2.jpg",null,"https://www.flickr.com/photos/dkeats/6377736777","Derek Keats"],
	["08 фильтр.jpg",null,null,null]
],
"options":{}}
!%/
|ссылка на контент шага|https://youtu.be/FPVcL0LtJ18|
|тип шага|video|
|visibleName|Медузы и&nbsp;губки|
|visibleName|Медуза и&nbsp;актиния|
|ссылка на контент шага|./environment/task_05-2/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_05_1.jpg|
|тип шага|pager|
|visibleName|Как устроено царство животных|
|table of contents thumb|text_05_1.jpg|
|ссылка на контент шага|./environment/JPG/text_05_2.jpg|
|тип шага|pager|
|visibleName|Медузы и&nbsp;кораллы|
|table of contents thumb|text_05_2.jpg|
|ссылка на контент шага|./environment/JPG/text_05_3.jpg|
|тип шага|pager|
|visibleName|Актинии и&nbsp;губки|
|table of contents thumb|text_05_3.jpg|
|ссылка на материал|./environment/PDF/05-Медузы_и_губки-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,1 Мб|
|ссылка на материал|./environment/PDF_2/05-Медузы_и_губки-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|237 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/06. Черви/|
!!!Описание
Дождевого червя видели все. А&nbsp;знакомы&nbsp;ли вы&nbsp;с&nbsp;червями, похожими на&nbsp;ленты, листики и&nbsp;птичьи перья?
!Дополнительно об уроке

!gallery data
{"data":[
	["01 морской червь с домиком.jpg","","https://www.flickr.com/photos/britusa/7546847066/","Terry Grogan"],
	["02 морской червь с домиком.jpg","","https://www.flickr.com/photos/92516268@N06/36707359315/","Jonathan Amato"],
	["03 морской червь.jpg","","",""],
	["04 дождевой червь.jpg","","",""],
	["05 дождевой червь ест листья.jpg","","",""],
	["06 дождевой червь рыхлит почву.jpg","","",""],
	["07 глист в животе.jpg","","",""],
	["08 плоский червь.jpg","","",""],
	["09 плоский червь — яйца.jpg","","",""],
	["10 плоский червь — яйцо крупно.jpg","","",""],
	["11 плоский червь — личинка.jpg","","",""],
	["12 заразиться глистами можно на улице.jpg","","",""],
	["13 заразиться глистами можно, если грызть ногти.jpg","","",""],
	["14 заразиться глистами можно от домашних животных.jpg","","",""],
	["15 заразиться глистами можно от немытых фруктов.jpg","","",""],
	["16 заразиться глистами можно, если грызть травинки.jpg","","",""]
],
"options":{}}
!%/
|visibleName|Черви|
|ссылка на контент шага|https://youtu.be/eub04j3ry2g|
|тип шага|video|
|visibleName|Черви|
|ссылка на контент шага|./environment/task_06-1/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/task_06-3/index.html|
|тип шага|task|
|visibleName|Дождевые черви|
|ссылка на контент шага|./environment/JPG/text_06_1.jpg|
|тип шага|pager|
|visibleName|Морские и&nbsp;дождевые черви|
|table of contents thumb|text_06_1.jpg|
|ссылка на контент шага|./environment/JPG/text_06_2.jpg|
|тип шага|pager|
|visibleName|Глисты|
|table of contents thumb|text_06_2.jpg|
|ссылка на материал|./environment/PDF/06-Черви-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,2 Мб|
|ссылка на материал|./environment/PDF_2/06-Черви-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|175 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/07. Моллюски/|
!!!Описание
Моллюски бывают очень разными: одни медленно ползают по&nbsp;суше, другие стремительно плавают по&nbsp;морю.
!Дополнительно об уроке

!gallery data
{"data":[
	["01 улитка.jpg",null,null,null],
	["02 слизень.jpg",null,null,null],
	["03 садовая улитка.jpg",null,"https://commons.wikimedia.org/wiki/File:Cepaea_hortensis_01_THWZ.jpg","Thomas Zimmermann"],
	["04 полевой слизень.jpg",null,"https://www.flickr.com/photos/dhobern/14676179872/in/","Donald Hobern"],
	["05 прудовик обыкновенный.jpg",null,"https://commons.wikimedia.org/wiki/File:Water_snail_Rex_2.jpg","Rex / Bart Slingerland"],
	["06 катушка.jpg",null,"https://www.needpix.com/photo/11547/aquarium-snail-planorbarius-corneus-animals-free-photos-free-images","Beeki"],
	["07 слизень ест.jpg",null,"https://commons.wikimedia.org/wiki/File:Eating_slug.jpg","Karlprof"],
	["07 улитка ест.jpg",null,"https://commons.wikimedia.org/wiki/File:Brazilian_Snail.jpg","Dcschmidt"],
	["08 робкий человек в шкафу.jpg",null,"",""],
	["09 двустворчатый моллюск.jpg",null,"",""],
	["10 жемчужина.jpg",null,"",""],
	["11 перловица.jpg",null,"https://commons.wikimedia.org/wiki/File:Unio_pictorum_2015.jpg","G.-U. Tolkiehn"],
	["11-2 перловица.jpg",null,"",""],
	["12 беззубка.jpg",null,"https://commons.wikimedia.org/wiki/File:Anodonta_cygnea_-_Swan_Mussel_pair.JPG","Rosser1954"],
	["13 осьминог.jpg",null,"",""],
	["13-2 осьминог.jpg",null,"https://commons.wikimedia.org/wiki/File:Octopus_at_Kelly_Tarlton%27s.jpg","Pseudopanax"],
	["14 кальмар.jpg",null,null,null],
	["14-2 кальмар.jpg",null,"https://commons.wikimedia.org/wiki/File:Squid_colors_2.tif","Betty Wills"],
	["15 каракатица.jpg",null,"",""],
	["15-2 каракатица.jpg",null,"https://it.m.wikipedia.org/wiki/File:Cuttlefish_@_Ocean%C3%A1rio_de_Lisboa.jpg","David Sim"],
	["гребешок.jpg","Гребешок",null,null],
	["одноногий пират.jpg","Одноногий пират",null,null],
	["старая раковина — можно обсудить, что в ней было изначально, а что появилось потом.jpg","Старая раковина",null,null],
	["тридакна.jpg","Тридакна",null,null]
],
"options":{}}
!%/
|ссылка на контент шага|https://youtu.be/HyT4jj0TJEc|
|тип шага|video|
|visibleName|Моллюски|
|ссылка на контент шага|./environment/task_07-2/index.html|
|тип шага|task|
|visibleName|Двустворчатый моллюск|
|visibleName|Школа моллюсков|
|ссылка на контент шага|./environment/task_07-5/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_07_1.jpg|
|тип шага|pager|
|visibleName|Брюхоногие и&nbsp;двустворчатые|
|table of contents thumb|text_07_1.jpg|
|ссылка на контент шага|./environment/JPG/text_07_2.jpg|
|тип шага|pager|
|visibleName|Головоногие|
|table of contents thumb|text_07_2.jpg|
|ссылка на материал|./environment/PDF/07-Моллюски-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,5 Мб|
|ссылка на материал|./environment/PDF_2/07-Моллюски-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|112 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/08. Членистоногие. Ракообразные/|
!!!Описание
Членистоногие&nbsp;&mdash; самые разнообразные животные. Мы&nbsp;поговорим о&nbsp;четырех группах членистоногих: ракообразных, паукообразных, многоножках и&nbsp;насекомых. Но&nbsp;для начала давайте разберемся, что у&nbsp;всех них общего и&nbsp;почему их&nbsp;так назвали: &laquo;членисто-ногие&raquo;.
!Дополнительно об уроке

!gallery data
{"data":[
	["01 членистоногие.jpg"],
	["02 рак.jpg"],
	["02 рыцарь в доспехах.jpg"],
	["03 рак линяет.jpg"],
	["04 краб.jpg"],
	["05 рак-отшельник.jpg"],
	["06 креветка.jpg"],
	["06 лодка с вёслами.jpg"],
	["07 дафния.jpg"]
],
"options":{}}
!%/
|visibleName|Членистоногие. Ракообразные|
|ссылка на контент шага|https://youtu.be/xYI7YabL7nk|
|тип шага|video|
|visibleName|Рак-отшельник|
|ссылка на контент шага|./environment/task_08-4/index.html|
|тип шага|task|
|visibleName|Ракообразные|
|ссылка на контент шага|./environment/task_08-6/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_08_1.jpg|
|тип шага|pager|
|visibleName|Кто относится к&nbsp;членистоногим|
|table of contents thumb|text_08_1.jpg|
|ссылка на контент шага|./environment/JPG/text_08_2.jpg|
|тип шага|pager|
|visibleName|Ноги членистоногих|
|table of contents thumb|text_08_2.jpg|
|ссылка на контент шага|./environment/JPG/text_08_3.jpg|
|тип шага|pager|
|visibleName|Краб, креветка и&nbsp;рак-отшельник|
|table of contents thumb|text_08_3.jpg|
|ссылка на контент шага|./environment/JPG/text_08_4.jpg|
|тип шага|pager|
|visibleName|Раки и&nbsp;дафнии|
|table of contents thumb|text_08_4.jpg|
|ссылка на материал|./environment/PDF/08-Членистоногие_Ракообразные-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|1,5 Мб|
|ссылка на материал|./environment/PDF_2/08-Членистоногие_Ракообразные-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|182 Кб|
<<lessonAdminPanel>>/%
|visibleName||
|galleryFolder|environment/galleries/09. Паукообразные и многоножки/|
!!!Описание
Мы&nbsp;обсудим, опасны&nbsp;ли пауки и&nbsp;их&nbsp;родственники, как они выглядят, чем питаются и&nbsp;кто из&nbsp;них живёт в&nbsp;нашей стране. А&nbsp;ещё поговорим о&nbsp;многоножках, которые тоже относятся к&nbsp;членистоногим.
!Дополнительно об уроке

!gallery data
{"data":[
	["01 тигр-паук.jpg",null,null,null],
	["01-2 тигр-паук 6 глаз.jpg",null,null,null],
	["01-3 тигр-паук ядовитый.jpg",null,null,null],
	["02 каракурт.jpg",null,"https://commons.wikimedia.org/wiki/File:Latrodectus_tredecimguttatus_female.jpg","Kork~commonswiki"],
	["02-2 каракурт.jpg",null,"https://commons.wikimedia.org/wiki/File:Latrodectus_tredecimguttatus_male.jpg","Kork~commonswiki"],
	["02-3 каракурт — ареал обитания в России.jpg",null,"",""],
	["02-4 паук каракурт.jpg",null,"",""],
	["03-1 крестовик роговой.jpg",null,"https://fotki.yandex.ru/users/woodmen19/","Владимир Брюхов"],
	["03-3 паук крестовик.jpg",null,null,null],
	["04 серебрянка.jpg",null,"https://commons.wikimedia.org/wiki/File:Argyroneta_Aquatica_Weibchen2.jpg","Norbert Schuller Baupi"],
	["05 доломедес.jpg",null,"https://www.flickr.com/photos/johnbalcombe/6046613900/","John Balcombe"],
	["06 паук-бокоход.jpg",null,"https://en.wikipedia.org/wiki/File:Ozyptila_praticola_-_front_(aka).jpg","André Karwath"],
	["07 паук-волк.jpg",null,"",""],
	["08 тарантул южнорусский.jpg",null,"https://www.flickr.com/photos/andrej_chudy/2940551371","Andrej Chudý"],
	["09 паук аргиопа.jpg",null,"https://uk.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Argiope_bruennichi_ukr.jpg","Anaxibia"],
	["10 паук-скакун.jpg",null,"https://be.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Salticus_scenicus-f.jpg","Magne Flåten"],
	["11 скорпион большой.jpg",null,"",""],
	["12 скорпион маленький.jpg",null,"",""],
	["13 императорский скорпион.jpg",null,"https://bg.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Emperor_scorpion_or_Imperial_scorpion_(Pandinus_imperator).jpg","Mike Baird"],
	["14 крымский скорпион.jpg",null,"https://fotki.yandex.ru/next/users/shell-peter/album/165754/view/792859","Литошко Олег"],
	["15 таёжный клещ.jpg",null,"",""],
	["15-2 таёжный клещ.jpg",null,"https://fotki.yandex.ru/users/woodmen19/","Владимир Брюхов"],
	["16 паутинный клещ.jpg",null,"https://www.flickr.com/photos/sanmartin/4883564395/in/album-72157624590769415/","Gilles San Martin"],
	["16-2 паутинный клещ — вред.jpg",null,"https://commons.wikimedia.org/wiki/File:Tetranychus_urticae_on_sweet_pepper,_Bonenspintmijt_op_paprika_(2).jpg","Rasbak"],
	["16-3 паутинный клещ.jpg",null,"",""],
	["17 водяной клещ.jpg",null,"https://commons.wikimedia.org/wiki/File:%D0%92%D0%BE%D0%B4%D1%8F%D0%BD%D0%BE%D0%B9_%D0%BA%D0%BB%D0%B5%D1%89.jpg","Anatoly Mikhaltsov"],
	["18 многоножка с десятью ногами.jpg",null,"https://www.flickr.com/photos/andybadger/15609403728/in/pool-myriapoda/","Andy Murray"],
	["19 многоножка сотня ног.jpg",null,"https://commons.wikimedia.org/wiki/File:Female_Illacme_plenipes_(MIL0020)_with_618_legs_-_ZooKeys-241-077-SP-6-left.jpg","Marek, P.; Shear, W.; Bond, J. (2012)"],
	["20 костянка обыкновенная.jpg",null,"https://www.flickr.com/photos/briangratwicke/18391662068/in/photolist-u2d5nS","Brian Gratwicke"],
	["21 кивсяк.jpg",null,"https://fotki.yandex.ru/users/woodmen19/","Владимир Брюхов"],
	["21-3 кивсяк ест крупно.jpg",null,"https://www.flickr.com/photos/ianredding/15304806833/in/photolist-pVXrPS-pZsVFi-pjr8RT-EgZjPZ","Ian Redding"],
	["22-4 кивсяк сворачивается спиралькой.jpg",null,"https://www.flickr.com/photos/gnilenkov/5887829857","Aleksey Gnilenkov"],
	["22-5 кивсяк.jpg",null,null,null]
],
"options":{}}
!%/
|visibleName|Паукообразные и&nbsp;многоножки|
|ссылка на контент шага|https://youtu.be/It6DqO5RA3g|
|тип шага|video|
|ссылка на контент шага|./environment/task_09-2/index.html|
|visibleName|Паукообразные и&nbsp;многоножки|
|тип шага|task|
|visibleName|Кто что ест?|
|ссылка на контент шага|./environment/task_09-3/index.html|
|тип шага|task|
|ссылка на контент шага|./environment/JPG/text_09_1.jpg|
|тип шага|pager|
|visibleName|Пауки|
|table of contents thumb|text_09_1.jpg|
|ссылка на контент шага|./environment/JPG/text_09_2.jpg|
|тип шага|pager|
|visibleName|Родственники пауков и&nbsp;многоножки|
|table of contents thumb|text_09_2.jpg|
|ссылка на материал|./environment/PDF/09-Паукообразные_и_многоножки-Конспект.pdf|
|visibleName|Конспект для ученика|
|занимает памяти|926 Кб|
|ссылка на материал|./environment/PDF_2/09-Паукообразные_и_многоножки-Методичка.pdf|
|visibleName|Методический материал для учителя|
|занимает памяти|177 Кб|
<!--{{{-->
<div class='header' role='banner' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
 <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
 <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
 <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
 <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
 <div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
 <div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea' role='main'>
 <div id='messageArea'></div>
 <div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
|PageTemplate|AuthorPageTemplate|
/***
|Version|1.0|
|Short status|<<insertEditable container:"@stateComment" size:max cell>>|
tests: [[BRP 1]], [[BRP 2]], [[BRP 3]]
***/
//{{{
var orig_BRP_changed = Tiddler.prototype.changed;
// this recalcs links according to config.textPrimitives.tiddlerAnyLinkRegExp and
// config.textPrimitives.tiddlerForcedLinkRegExp , so temporarily hijack them
Tiddler.prototype.changed = function()
{
	var brackettedLinkRE = config.textPrimitives.brackettedLink,
//	    titledBrackettedLinkRE = config.textPrimitives.titledBrackettedLink,
	    sectionOrSliceAddition =
		"(?:(?:(?:"+config.textPrimitives.sliceSeparator+"[^\\|\\n\\]]+)|"+ //::
		   "(?:"+config.textPrimitives.sectionSeparator+"[^\\n\\]]+))?)",   //##
	    tiddlerForcedLinkRegExp = config.textPrimitives.tiddlerForcedLinkRegExp,
	    tiddlerAnyLinkRegExp    = config.textPrimitives.tiddlerAnyLinkRegExp;
	
	// hijack REs
	config.textPrimitives.brackettedLink = "\\[\\[([^\\]]+?)"+ // extra "?" is important here
		sectionOrSliceAddition+
		"\\]\\]";
		// core definition: "\\[\\[([^\\]]+)\\]\\]";

//	config.textPrimitives.titledBrackettedLink = "\\[\\[([^\\[\\]\\|]+)\\|([^\\[\\]\\|]+?)"+
//		sectionOrSliceAddition+
//		"\\]\\]";
		// core definition: "\\[\\[([^\\[\\]\\|]+)\\|([^\\[\\]\\|]+)\\]\\]";
	// recalc, as in the core:
	config.textPrimitives.tiddlerForcedLinkRegExp = new RegExp("(?:" +
		config.textPrimitives.titledBrackettedLink + ")|(?:" +
		config.textPrimitives.brackettedLink + ")|(?:" +
		config.textPrimitives.urlPattern + ")","mg");
	config.textPrimitives.tiddlerAnyLinkRegExp = new RegExp("("+
		config.textPrimitives.wikiLink + ")|(?:" +
		config.textPrimitives.titledBrackettedLink + ")|(?:" +
		config.textPrimitives.brackettedLink + ")|(?:" +
		config.textPrimitives.urlPattern + ")","mg");
	
	var result = orig_BRP_changed.apply(this,arguments);
	
	// unhijack REs
	config.textPrimitives.brackettedLink = brackettedLinkRE;
//	config.textPrimitives.titledBrackettedLink = titledBrackettedLinkRE;
	// recalc again
	config.textPrimitives.tiddlerForcedLinkRegExp = new RegExp("(?:" +
		config.textPrimitives.titledBrackettedLink + ")|(?:" +
		config.textPrimitives.brackettedLink + ")|(?:" +
		config.textPrimitives.urlPattern + ")","mg");
	config.textPrimitives.tiddlerAnyLinkRegExp = new RegExp("("+
		config.textPrimitives.wikiLink + ")|(?:" +
		config.textPrimitives.titledBrackettedLink + ")|(?:" +
		config.textPrimitives.brackettedLink + ")|(?:" +
		config.textPrimitives.urlPattern + ")","mg");

	return result; // in fact, there's no result, this is for possible future extensions
};
//}}}
<<tabs txtMainTab
	"Поиск" "Move to" CommonAggregationTools##MoveTo
	"Все записи" "All tiddlers" CommonAggregationTools##TabAllAll
	"Тэги" "All tags" CommonAggregationTools##TabTags
	"Ещё.." "More lists" CommonAggregationTools##TabsMore
>>/%
!MoveTo
<<search>>
!TabAllAll
<<tabs txtTabAll
	"Timeline" "Timeline" CommonAggregationTools##TabTimeline
	"All" "All tiddlers" CommonAggregationTools##TabAll
>>
!TabTimeline
<<timeline>>
!TabAll
<<list all>>
!TabTags
<<allTags excludeLists>>
!TabsMore
<<tabs txtMoreTab
	"Missing" "Missing tiddlers" CommonAggregationTools##TabMoreMissing
	"Orphans" "Orphaned tiddlers" CommonAggregationTools##TabMoreOrphans
	"Shadowed" "Shadowed tiddlers" CommonAggregationTools##TabMoreShadowed
>>
!TabMoreMissing
<<list missing>>
!TabMoreOrphans
<<list orphans>>
!TabMoreShadowed
<<list shadowed>>
!%/
/***
|Description|This plugin fixes a couple of macro params issues:<br>1) fixes macro error in some cases when a named param has {{{{{}}}-containing value;<br>2) makes "escaped" ' and " in macro params be really escaped (examples: {{{"some \"value\""}}} is parsed as {{{some "value"}}} and {{{'that\'s nice'}}} becomes {{{that's nice}}})|
|Version|1.0|
|Short status|<<insertEditable container:"@stateComment" size:max cell>>|
|Author|Yakov Litvin|
***/
//{{{
// fix the error rising for macros with '{{'-containing named param's value
String.prototype.readMacroParams = function(notAllowEval)
{
	// YL tweak: don't use "noNames"
	var p = this.parseParams("_default",null,!notAllowEval);
	var t, n = [];
	for(t = 1; t < p.length; t++)
		n.push(p[t].value);
	return n;
};

// implement escaping of ' and " in macro params
String.prototype.parseParams = function(defaultName,defaultValue,allowEval,noNames,cascadeDefaults)
{
	var parseToken = function(match,p) {
		var n;
		if(match[p]) // Double quoted
			// YL tweak: substitute escaped \" with "
			n = match[p].replace(/\\"/g,'"');
		else if(match[p+1]) // Single quoted
			// YL tweak: substitute escaped \' with '
			n = match[p+1].replace(/\\'/g,"'");
		else if(match[p+2]) // Double-square-bracket quoted
			n = match[p+2];
		else if(match[p+3]) // Double-brace quoted
			try {
				n = match[p+3];
				if(allowEval && config.evaluateMacroParameters != "none") {
					if(config.evaluateMacroParameters == "restricted") {
						if(window.restrictedEval)
							n = window.restrictedEval(n);
					} else
						n = window.eval(n);
				}
			} catch(ex) {
				throw "Unable to evaluate {{" + match[p+3] + "}}: " + exceptionText(ex);
			}
		else if(match[p+4]) // Unquoted
			n = match[p+4];
		else if(match[p+5]) // empty quote
			n = "";
		return n;
	};
	var r = [{}];
	var dblQuote = "(?:\"((?:(?:\\\\\")|[^\"])+)\")";
	var sngQuote = "(?:'((?:(?:\\\\\')|[^'])+)')";
	var dblSquare = "(?:\\[\\[((?:\\s|\\S)*?)\\]\\])";
	var dblBrace = "(?:\\{\\{((?:\\s|\\S)*?)\\}\\})";
	var unQuoted = noNames ? "([^\"'\\s]\\S*)" : "([^\"':\\s][^\\s:]*)";
	var emptyQuote = "((?:\"\")|(?:''))";
	var skipSpace = "(?:\\s*)";
	var token = "(?:" + dblQuote + "|" + sngQuote + "|" + dblSquare + "|" + dblBrace + "|" + unQuoted + "|" + emptyQuote + ")";
	var re = noNames ? new RegExp(token,"mg") : new RegExp(skipSpace + token + skipSpace + "(?:(\\:)" + skipSpace + token + ")?","mg");
	var match;
	do {
		match = re.exec(this);
		if(match) {
			var n = parseToken(match,1);
			if(noNames) {
				r.push({ name:"", value:n });
			} else {
				var v = parseToken(match,8);
				if(v == null && defaultName) {
					v = n;
					n = defaultName;
				} else if(v == null && defaultValue) {
					v = defaultValue;
				}
				r.push({ name:n, value:v });
				if(cascadeDefaults) {
					defaultName = n;
					defaultValue = v;
				}
			}
		}
	} while(match);
	
	// Summarise parameters into first element
	var t;
	for(t = 1; t < r.length; t++)
		if(r[0][r[t].name])
			r[0][r[t].name].push(r[t].value);
		else
			r[0][r[t].name] = [r[t].value];
	return r;
};
//}}}
|>|//Для редактирования данных кликните в соответствующий текст; для применения изменений нажмите ctrl+enter; для отмены -- esc или кликните вне области редактирования.//|
|Автор/%%/     			|<<insertEditable tiddler:[[$1]] container:":Автор" cell noNotify>>|
|Аудитория/%%/			|<<insertEditable tiddler:[[$1]] container:":Аудитория" cell noNotify>>|
|Картинка в шапке (ссылка)	|<<insertEditable tiddler:[[$1]] container:":Картинка в шапке" cell noNotify>>|
|id курса (по-английски, без пробелов)|<<insertEditable tiddler:[[$1]] container:":courseId" cell noNotify>>|
|Описание				|<<insertEditable tiddler:[[$1]] container:"#Описание" cell noNotify>>|
|Дополнительный html в шапке|<<insertEditable tiddler:[[$1]] container:"#In title" cell noNotify>>|
% tabs %((
%% old editor %%
<<fet set:'tag[$1] AND (tag[unit] tag[заголовок 1 надуровня] tag[заголовок 2 надуровня])'
  sortableBy:{{store.fetchTiddler('$1').getSlice('courseId',config.macros.itemMenu.defaultField)}}
  script 'var wrap = function(text){
	if(tiddler.tags.contains("hide"))
		text = "--"+text+"--";
	if(tiddler.tags.contains("заголовок 1 надуровня"))
		return "\'\'"+text+"\'\'";
	if(tiddler.tags.contains("заголовок 2 надуровня"))
		return "@@font-size:larger;\'\'"+text+"\'\'@@";
	// mute units without steps/attachments
	return store.getTaggedTiddlers(tiddler.title).length ? text : ("@@color:gray;"+text+"@@")
  }'
  writeToList 'wrap(insert("!","size:max"))
		+"|" + insert(":visibleName","size:max noNotify")'
  begin 'adder("text:{{\"<<lessonAdminPanel>\"+\">/%\\n!!!Описание\\n!%/\"}}","Добавить урок","bottom")+"<<addTiddler tag:\'$1\' tag:\'заголовок 1 надуровня\' label:\'Добавить заголовок-разделитель\'>"+"><<addTiddler tag:\'$1\' tag:\'заголовок 2 надуровня\' label:\'Добавить заголовок для большей единицы контента\'>"+">\n||название урока|название, видимое пользователю|\n"' none:same
>>
%% spreadsheet editor %%
<<handsontable
  filter:{{'set: tag[$1] AND (tag[unit] tag[заголовок 1 надуровня] tag[заголовок 2 надуровня]) sortField['+ store.fetchTiddler('$1').getSlice('courseId',config.macros.itemMenu.defaultField) +']'}}
  containers:"" "!" ":visibleName"
  options:'{
	colHeaders: ["", "название урока","название, видимое пользователю"],
	manualColumnResize: [22],
	renderer: function (instance, td, row, col, prop, value, cellProperties)
	{
		Handsontable.Dom.empty(td);
		var stuffToWikify = value,
		    container = instance.container.parentElement,
		    filter = jQuery(container).data("tiddlersFilter"),
//		    tidContainer = jQuery(container).data("containers")[col],
		    tid = store.filterTiddlers(filter)[row];
		var wrap = function(text,tiddler){
			if(tiddler.tags.contains("hide"))
				text = "--"+text+"--";
			if(tiddler.tags.contains("заголовок 1 надуровня"))
				return "\'\'"+text+"\'\'";
			if(tiddler.tags.contains("заголовок 2 надуровня"))
				return "@@font-size:larger;\'\'"+text+"\'\'@@";
			// mute units without steps/attachments
			return store.getTaggedTiddlers(tiddler.title).length ? text : ("@@color:gray;"+text+"@@")
		    }
		if(col == 1)
			stuffToWikify = wrap(stuffToWikify,tid);
		if(col == 0 && row < tiddlers.length)
			stuffToWikify = "<<itemMenu [["+tid.title+"]] \""+filter+"\" field:"
			 +store.fetchTiddler("$1").getSlice("courseId",config.macros.itemMenu.defaultField)
			 +">"+">"
		wikify(""+(stuffToWikify || ""),td);
		return td;
	}/*,
	afterSelectionEnd: function afterSelectionEdit(r1, c1, r2, c2) {
		//# to test: makes a delay before editing – is it important?
		if (r1 !== r2 && c1 !== c2)
			return;
		this.getActiveEditor().beginEditing();
	}*/
  }'
>>
))%%
[[edit panel|CourseAdminPanel]]
//{{{
// --- theme switching -------------------------------------
var usedOnline = window.location.protocol != "file:";
var usedWithBackEnd = !!window.saveOnlineChanges;
var visitorThemeName = "WebTheme";
var authorThemeName  = "AuthorTheme";
readOnly = usedOnline && !usedWithBackEnd;

// theme setting helpers
story.setVisitorTheme = function() {
	story.switchTheme(visitorThemeName);
	//# test (online auto-setting, including web config.options.txtTheme is saved)
};
story.setAuthorTheme = function() {
	story.switchTheme(authorThemeName);
	//# test (online auto-setting, including web config.options.txtTheme is saved)
};
story.toggleRoleTheme = function() {
	if(config.options.txtTheme == visitorThemeName)
		story.setAuthorTheme();
	else
		story.setVisitorTheme();
};

// set theme on startup
if(usedOnline && !usedWithBackEnd) {

	var ensureTheme = function(){
		if(config.options.txtTheme != visitorThemeName)
			story.setVisitorTheme();
	}
	setInterval(ensureTheme,100);
} else {
	var ensureTheme = function(){
		if(config.options.txtTheme != authorThemeName)
			story.setAuthorTheme();
	}
	story.setAuthorTheme();
//# dirty hacky way:
	setTimeout(ensureTheme,100);
	setTimeout(ensureTheme,200);
	setTimeout(ensureTheme,300);
	setTimeout(ensureTheme,400);
	setTimeout(ensureTheme,500);
	setTimeout(ensureTheme,600);
}

// enable theme switching by pressing ctrl+shift+t
jQuery(document).on('keydown',function(e){
	if(usedOnline && !usedWithBackEnd) return;
	if((e.which == 222 /*'*/ || e.which == 0) && e.ctrlKey && e.shiftKey) {
		story.toggleRoleTheme();
		if(e.preventDefault)
			e.preventDefault();
		return false;
	}
});

// display different tiddlers for an author and a visitor:
story.orig_displayDefaultTiddlers = story.displayDefaultTiddlers;
story.displayDefaultTiddlers = function()
{
	if(usedOnline && !usedWithBackEnd)
		this.displayTiddlers(null, store.filterTiddlers(store.getTiddlerText("WebDefaultTiddlers") ||""));
	else
		this.orig_displayDefaultTiddlers();
};

// disable including for visitors (prevent error message to appear)
config.options.chkUseInclude = !usedOnline;// || usedWithBackEnd;

// --- helpers ---------------------------------------------
function updateQueryParameter(uri, key, value) {
	var re = new RegExp("([?&])" + key + "=.*?(&|#|$)", "i");
	if (uri.match(re))
		return uri.replace(re, '$1' + key + "=" + value + '$2');
	else {
		var hash =  '';
		if( uri.indexOf('#') !== -1 ){
			hash = uri.replace(/.*#/, '#');
			uri = uri.replace(/#.*/, '');
		}
		var separator = uri.indexOf('?') !== -1 ? "&" : "?";    
		return uri + separator + key + "=" + value + hash;
	}
};
Tiddler.prototype.getVisibleName = function(sliceName,anotherDefault)
{
	return this.getSlice(sliceName || "visibleName") || anotherDefault || this.title;
};
window.isEnvironmentLesson = function(tiddler){
	if(tiddler.title == "Тестовый урок с галереей")
		return true;
	var tags = tiddler.tags;
	for(var i = 0; i < tags.length; i++)
		if(tags[i].contains("Окружающий мир"))
			return true;
	return false;
};

// 
if(config.options.txtUnitStep === undefined)
	config.options.txtUnitStep = 0;
if(config.options.txtLessonNumber === undefined)
	config.options.txtLessonNumber = 0;

// --- unit step macros ------------------------------------
config.macros.unitStep =
{
	getUnitSteps: function(tiddler) {
		var tag = tiddler.title,
		    steps = store.filterTiddlers("set: tag["+tag+"] AND tag[unitStep]");
		return config.macros.itemMenu.sortByCounter(steps/*, fieldName*/);
	},
	handler: function(place,macroName,params,wikifier,paramString,tiddler)
	{
		var singleStepMode = paramString.contains("singleStepMode");

		// lesson steps and current step
		var steps = this.getUnitSteps(tiddler);

		if(singleStepMode)
			steps = [tiddler];

		jQuery(document).trigger('lessonPreStart');

		// header (navigation)
		var header = createTiddlyElement(place,"div","","lessonNavigation","",{role:'navigation'});

		var hrefToMain = "http://cpm.dogm.mos.ru/";
		var linkToMain = hrefToMain ? createExternalLink(header,hrefToMain) :
			jQuery('<a class="noLink"></a>').appendTo(header)[0];
		createTiddlyElement(linkToMain,"div","","logo-sign");

		// link to course contents (if not available, doesn't do anything)
		var getObjectTag = function(tiddler,objectTag) {
			if(!tiddler || !tiddler.tags)
				return null;
			var i, tag;
			for(i = 0; i < tiddler.tags.length; i++) {
				tag = store.fetchTiddler(tiddler.tags[i]);
				if(tag && tag.tags.contains(objectTag))
					return tag;
			}
			return null;
		};
		var i, attachedToLesson, theCourse;
		if(tiddler.tags.contains("alternativeUnit")) {
			attachedToLesson = getObjectTag(tiddler,"unit");
			theCourse = getObjectTag(attachedToLesson,"course");
		} else
			theCourse = getObjectTag(tiddler,"course");

		var title = tiddler.getVisibleName();
		if(theCourse) {
			var linkToContents = createTiddlyLink(header,theCourse.title);
			jQuery(linkToContents).html(title).addClass("linkToContents");
		} else
			jQuery("<a class='noLinkToContents'>"+title+"</a>")
				.appendTo(header);

		var navLink, type;
		if(steps.length > 1)
		  for(var k = 0; k < steps.length; k++) // not compatible with elder browsers
		  {
			let j = k; // fix for IE 11
			navLink = createTiddlyElement(header,"a","","stepLink");
			jQuery(navLink).on('click',function(){
				config.options.txtUnitStep = j;
				refreshStep();
			});
			if(type = steps[j].getSlice("тип шага"))
				createTiddlyElement(navLink,"div","",type);
			else
				createTiddlyText(navLink,"шаг "+j);
		  }


		// wrapper, 3 columns and buttons (backward/forward)
		//# when back/forth buttons are added to the first/last steps, alternativeUnit s should be taken into accout
		var wrapper = createTiddlyElement(place,"div","","unitStep"),
		    leftColumn = createTiddlyElement(wrapper,"div","","goPrevContainer"),
		    contentColumn = createTiddlyElement(wrapper,"div","", "unitStepContentContainer"),
		    rightColumn = createTiddlyElement(wrapper,"div","","goNextContainer");

		if(steps.length == 0)
			return;
			//# display something indicating that the lesson is empty for now

		var goBack = function(){
			if(config.options.txtUnitStep > 0) {
				config.options.txtUnitStep--;
				refreshStep();
			}
		};
		var goForth = function(){
			if(config.options.txtUnitStep < steps.length-1) {
				config.options.txtUnitStep++;
				refreshStep();
			}
		};
		var backContainer = createTiddlyElement(leftColumn,"div","","backContainer");
		var backButton = createTiddlyElement(backContainer,"div","","backward");
		jQuery(leftColumn).on('click',goBack);
		var forthContainer = createTiddlyElement(rightColumn,"div","","forthContainer");
		var forwardButton = createTiddlyElement(forthContainer,"div","","forward");
		jQuery(rightColumn).on('click',goForth);

		var refreshStep = function()
		{
			// refresh content
			jQuery(contentColumn).empty();

			// dirty fix for the inconsistent values of config.options.txtUnitStep
			if(config.options.txtUnitStep > steps.length-1)
				config.options.txtUnitStep = steps.length-1;

			var step = steps[config.options.txtUnitStep];
			var contentUrl = step ? step.getSlice("ссылка на контент шага") : "";
			var specifiedHeight = step.getSlice("contentHeight");
			if(specifiedHeight) specifiedHeight = parseInt(specifiedHeight);

			if(contentUrl) {
				var isImage = /\.(png|jpg|jpeg|gif)(\?.*)?$/i.exec(contentUrl);
				var isVideo = /(?:youtube\.com)|(?:youtu\.be)|(?:^[-\w]+$)/i.exec(contentUrl)
					|| step.getSlice("тип шага") == "video";
				if(isVideo) {
/* deal with the following urls:
 *
 * https://www.youtube.com/watch?v=34c2GNgBpfE
 *   https://www.youtube.com/embed/34c2GNgBpfE <- canonical one, turn them into this form
 *		  https://youtu.be/34c2GNgBpfE
 *				   34c2GNgBpfE
 */
				    var youtubeIdRE = /((?:youtube\.com\/watch\?v=)|(?:youtube\.com\/embed\/)|(?:youtu\.be\/))?([-\w]+)((\?.*)|(\&.*)|$)/,
					youtubeIdMatch = youtubeIdRE.exec(contentUrl),
					youtubeId = youtubeIdMatch ? youtubeIdMatch[2]:"";
				    if(youtubeId)
					contentUrl = "https://www.youtube.com/embed/"+ youtubeId;
				//  if(!contentUrl)
				//	contentUrl = ""; // set url for video dummy here

				    // disable autoplay, remove "related" from YouTube videos
				    contentUrl = updateQueryParameter(contentUrl, "autoplay", 0);
				    contentUrl = updateQueryParameter(contentUrl,"rel",0);
				}
				
				if(isImage)
					jQuery("<img src='"+contentUrl+"' />")
						.addClass("contentImage")
						.appendTo(contentColumn);
				else {
					var iframe = createTiddlyElement(contentColumn,"iframe","", "contentIframe","",{
						src: contentUrl,
						frameborder: 0,
						allowfullscreen: "allowfullscreen",
						scrolling: "no",
						was_reloaded: false
					});

					if(/\.html$/.exec(contentUrl))
						iframe.onload = function(){
							this.height = specifiedHeight || (this.contentWindow.document.body.offsetHeight +50);
							if(!this.was_reloaded) //optional?
							{
								this.was_reloaded = true;
								try {
									this.contentDocument.location.reload();
								}catch(ex){}
							}
						}
						// +50 is a dirty hack; no idea why needed
					else
						// for video mostly
						iframe.height = iframe.offsetWidth * 9/16;
				}
			}
			//contentColumn.heigh = contentColumn.firstChild.offsetHeight; //# set via CSS instead
			//# implement ?? for no-contentUrl case

			// refresh navigation arrows
			if(config.options.txtUnitStep == 0)
				jQuery(backContainer).hide();
			else
				jQuery(backContainer).show();
			if(config.options.txtUnitStep == steps.length-1)
				jQuery(forthContainer).hide();
			else
				jQuery(forthContainer).show();

			//# highlight the link to the opened step in the nav bar
			jQuery(".currentStep").removeClass("currentStep");
			jQuery(".stepLink:eq("+config.options.txtUnitStep+")") .addClass("currentStep");
		}
		refreshStep();
	},
};
config.macros.lesson =
{
	getAttachments: function(tiddler) {
		var tag = tiddler.title,
		    atts = store.filterTiddlers("set: tag["+tag+"] AND tag[attachment]");
		return config.macros.itemMenu.sortByCounter(atts/*, fieldName*/);
	}
};
config.macros.unitStepFooter =
{
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		//# implement
	}
};
config.macros.lessonAdminPanel =
{
	handler: function(place,macroName,params,wikifier,paramString,tiddler)
	{
		// parametric transclusion is useful for more fluid development
		wikify('<<tiddler [[LessonAdminPanel]] with:[['+tiddler.title+']] noedit>>',place,null,tiddler);
	}
};

// --- course macros ------------------------------------
config.macros.fillCourseHeader = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler)
	{
		var imgUrl = tiddler.getSlice("Картинка в шапке","");
		if(imgUrl)
			jQuery('#course-header').css("background",
				'linear-gradient(to right,rgba(0,0,0,0.4), rgba(0,0,0,0) 80%) no-repeat left, url("'+imgUrl+'") no-repeat center');

		jQuery("#main_content #course-header")
		  .empty()
		  .append(
		   '<h2 id="course-name">'+	tiddler.getVisibleName()	+'</h2>'+
		   '<h4 id="course-author">'+	tiddler.getSlice("Автор","")	+'</h4>'+
		   '<h4 id="course-audience">'+	tiddler.getSlice("Аудитория","")+'</h4>'+
		   (tiddler.getSection("In title",""))
		  );
	}
};
config.macros.fillCourseContents = {
	getCourseContents: function(course)
	{
		if(!course) return null;
		//# may be add getting course tiddler if course is the title or courseId
		var tids = store.filterTiddlers("[tag["+course.title+"]] [not[tag[hide]]"),
		    courseId = course.getSlice("courseId","");
		return config.macros.itemMenu.sortByCounter(tids, courseId);
	},
	getCourseLessons: function(course)
	{
		var contents = this.getCourseContents(course), i;
		if(!contents) return null;
		for(i = 0; i < contents.length; i++)
			if(!contents[i].tags.contains("unit"))
				contents.splice(i--,1);
		return contents;
	},
	openLesson: function(lesson,stepIndex)
	{
		config.options.txtUnitStep = stepIndex;
		story.displayTiddler(this,lesson);
	},
	handler: function(place,macroName,params,wikifier,paramString,courseTiddler)
	{
		var lessons = this.getCourseLessons(courseTiddler),
		    contents = this.getCourseContents(courseTiddler);

		var getIndentIndex = function(itemTiddler) {
			if(itemTiddler.tags.contains("unit")) return 0;
			if(itemTiddler.tags.contains("заголовок 1 надуровня")) return 1;
			if(itemTiddler.tags.contains("заголовок 2 надуровня")) return 2;
		},
		    maxIndentIndex = 0;
		for(n = 0; n < contents.length; n++)
			if(getIndentIndex(contents[n]) > maxIndentIndex)
				maxIndentIndex = getIndentIndex(contents[n]);

		var $courseContentsColumn = jQuery("#lessons-list"),
		    $lessonContentsColumn = jQuery("#lesson-content");

		$courseContentsColumn.empty();
		// add the "about course" link (implement in refresher)
		jQuery('<a class="lesson-name h4">О курсе</a>')
			.on('click',function(){
				config.options.txtLessonNumber = 0;
				selectLesson();
			}).appendTo($courseContentsColumn)
			.wrap('<div class="lesson" />');
		// add per lesson links
		for(var k = 0; k < contents.length; k++) { let i = k; // fix for IE 11
			let item = contents[i], isLesson = item.tags.contains("unit");
			let mute = isLesson && !store.getTaggedTiddlers(item.title).length && !item.getSection("Описание") || item.isTagged("mute");
			let levelClass = isLesson ? 'h4' :
				(item.tags.contains("заголовок 1 надуровня")? 'h3' : 'h2');
			let indentClass = "indent-"+(maxIndentIndex - getIndentIndex(item));

			jQuery('<a class="lesson-name '+levelClass+' '+indentClass+(mute ? ' mute' : '')+'">'
					+contents[i].getVisibleName()+'</a>')
				.on('click',function(){
					if(mute) return;
					if(isLesson) {
						config.options.txtLessonNumber = lessons.indexOf(item)+1;
						selectLesson();
					} else if(levelClass == 'h3')
						openAccordionSectionAfter(this);
//console.log("clicked");
				}).appendTo($courseContentsColumn)
				.wrap('<div class="lesson" />');
		}
		var openAccordionSectionAfter = function(titleElement) {

			// a bad hack to implement an "accordion"
			if(jQuery('.h3').length)
				jQuery('.h4:not(:first)').css('display', 'none');
			if(titleElement)
				jQuery(titleElement).parent().nextUntil(':has(>.h3)').children() .css('display', 'block');
			var lastItem = jQuery('.h4').last()[0];
			if(lastItem.text == "Над курсом работали") jQuery(lastItem).css('display', 'block');
			//# scroll into view
		};
		openAccordionSectionAfter(); // hide all

		var selectLesson = function() {
			// (re)set selection
			jQuery('.lesson-active').removeClass("lesson-active");
			var lessonNumber = config.options.txtLessonNumber-1,
			    lessonNumberAmongContents = lessonNumber == -1 ? 0 :
				contents.indexOf(lessons[lessonNumber])+1;
			jQuery(".lesson-name").eq(lessonNumberAmongContents).addClass("lesson-active");

			$lessonContentsColumn.empty();
			var $lessonContentsWrapper = jQuery('<div>').appendTo($lessonContentsColumn);
			window.elementToKeepIntoView = $lessonContentsWrapper[0];
			jQuery(window).scroll();
			if(lessonNumberAmongContents == 0) {
			// show "about course"
				let description = courseTiddler.getSection("Описание");
				if(description)
					$lessonContentsWrapper.append('<p>'+description+ '</p>');
				/*if(lessons.length)
				  jQuery('<a class="btn btn-primary">Начать курс</a>')
					.on('click',function(){
						config.macros.fillCourseContents.openLesson(lessons[0],0);
					})
					.appendTo($lessonContentsWrapper)
				 */
				//# hr and teacher description
			} else {
			// show lesson
				var lessonNumber = config.options.txtLessonNumber - 1;
				if(lessonNumber >= lessons.length) lessonNumber = 0; // fixes a bug taking place when we jump from a course to another one that has fewer lessons
				var lesson   = lessons[lessonNumber],
				    isEnvLesson = window.isEnvironmentLesson(lesson),
				    title    = lesson.title,
				    visibleTitle = lesson.getVisibleName(),
				    lessonDescription = lesson.getSection("Описание"),
				    extraHtml = lesson.getSection("Дополнительно об уроке"),
				    steps    = config.macros.unitStep.getUnitSteps(lesson),
				    ruTypes  = {
					pager: "Конспект",
					task:  "Задание",
					test:  "Тест",
					video: "Видео",
				    },
				    showSteps = (steps.length > 1) || (courseTiddler.title != "Неорганическая химия"),
				    goLabel   = showSteps ? "Пройти занятие" : "Посмотреть",
				    isGoButtonNeeded = !courseTiddler.getSlice("hideStartUnitButton");
//# add to course admin panel
				$lessonContentsWrapper
					.append('<h2>'+visibleTitle+'</h2>')
					//# number in h2/"Занятие #" as h5
					.append('<p>'+lessonDescription+'</p>')
					.append((steps.length && isGoButtonNeeded) ?
						jQuery('<a class="btn btn-primary" >'+goLabel+'</a>')
						  .on('click',function(){
							config.macros.fillCourseContents
								.openLesson(title,0);
						  })
						: '')
					.append('<ol id="lesson-steps"/>')

				if(showSteps) {
				  for(var i = 0; i < steps.length; i++) {
					let type = steps[i].getSlice("тип шага"),
					    ruType = ruTypes[type], stepNumber = i;
					if(isEnvLesson && type == "pager" && steps[i].getSlice("table of contents thumb"))
						break;

					jQuery('<a>')
						.appendTo("#lesson-steps")
						.wrap('<li>').wrap('<p>')
						.on('click',function(){
							config.macros.fillCourseContents
								.openLesson(title,stepNumber);
						})
						//.append('<div class="pull-left '+type+'"/>')
						.append(jQuery('<img/>',{
							class:  "pull-left",
							src:    "images/"+(type=="pager" ? "text" : type)+".svg", // типы, исп-ные до того, отл-ся от тех, что у Виктора
							width:  "24px",
							height: "24px"
						}))
						.append('<span class="lesson-label">'+steps[i].getVisibleName()+'</span><br>'+
							'<small>'+ruType+'</small>')
						//# " - 5:99" (video length)
				  }
				  // show pagers as 1 item with several clickable thumbs
				  if(i < steps.length)
				  {
				    var $synopsisContainer = jQuery('<li>').appendTo("#lesson-steps");
				    let stepNumber = i; // resume counting steps
				    jQuery('<a>')
					.on('click',function(){
					    config.macros.fillCourseContents.openLesson(title,stepNumber);
					})
					.appendTo($synopsisContainer)
					.wrap('<p>')
					.append(jQuery('<img/>',{
						class: "pull-left", src: "images/text.svg",
						width: "24px", height: "24px"
					}))
					.append('<span class="lesson-label last-lesson-label">Конспект для ученика</span>')

				    var thumbUrl,
					lessonsThumbsFolder = courseTiddler.getSlice("lessonsThumbsFolder");

				    var $img, $thumbContainer = jQuery('<ul>',{class:'summary_list'})
						.appendTo($synopsisContainer);
				    for(; i < steps.length; i++) {
					let stepNumber = i;
					thumbUrl = steps[stepNumber].getSlice("table of contents thumb");
					thumbUrl = thumbUrl ? lessonsThumbsFolder + thumbUrl : "";
					jQuery('<a>').on('click',function(){
					    config.macros.fillCourseContents.openLesson(title,stepNumber);
					})
					.appendTo($thumbContainer)
					.wrap('<li>')
					.append(jQuery('<img/>',{src: thumbUrl}));
				    }
				  }
				}

				var attachments = config.macros.lesson.getAttachments( lesson ),
				    attName, attUrl, isPdf, attSize, attExtMatch;
				if(isEnvLesson && attachments.length)
					jQuery('<h3 class="download_content_header">Материалы для скачивания</h3>').appendTo($lessonContentsWrapper);
				for(var k = 0; k < attachments.length; k++)
				{
					let i = k; // fix for IE 11
					attName = attachments[i].getVisibleName();
					attUrl  = attachments[i].getSlice("ссылка на материал");
					attExtMatch = /\.(\w{2,5})$/.exec(attUrl);
					isPdf   = /\.pdf/i.exec(attUrl);
					attSize = attachments[i].getSlice("занимает памяти");
					if(isEnvLesson) {
					    jQuery('<p class="download_content"><span class="download_content_label">'+attName+'</span></p>')
						.appendTo($lessonContentsWrapper);
					    jQuery('<p class="download_links"><a href="'+attUrl+'" target="_blank">'+
							'<img src="images/env_galleries/download_arrow_white.svg" class="arrow-attachment-icon">'+
							(attExtMatch ? '<span class="file_extension">'+attExtMatch[1]+'</span>' : '')+
							(attSize ? '<span class="file-size">'+ attSize+ '</span>' : '')+
						   '</a></p>')
						.appendTo($lessonContentsWrapper);
					} else {
					    jQuery('<a href="'+attUrl+'" target="_blank" />')
						.appendTo($lessonContentsWrapper)
						.wrap('<p>')
						.append('<img src="images/dwnld_solid.svg" class="attachment-icon">'+
							'<span class="attachment-label">'+attName+'</span>' +
							(isPdf ? ' <img src="images/pdf.svg" class="pdf-attachment-icon">' : '') +
							(!attSize ? '' : (isPdf ? ' <span class="file-size">'+attSize+'</span>' : ' (<span class="file-size">'+attSize+'</span>)'))
						);
					}
				}

				// add download gallery button
				var imageFolder = lesson.getSlice("galleryFolder"),
				    thumbSubfolder = 'thumbnails/'
				var imagesDataJSON = lesson.getSection("gallery data"),
				    imagesData = imagesDataJSON ? JSON.parse(imagesDataJSON).data : null;
				if(imagesData[0][0]) {
				    jQuery('<p class="download_content"><span class="download_content_label">Рисунки и фотографии</span></p>')
					.appendTo($lessonContentsWrapper);
				    var attUrl = './get_zipped_materials.php?gallery='+imageFolder;
				    var attSize = ''; //# get from the script
				    jQuery('<p class="download_links"><a href="'+attUrl+'">'+
					   '<img src="images/env_galleries/download_arrow_white.svg" class="arrow-attachment-icon">'+
					   '<span class="file_extension">zip</span>'+
					   (attSize ? '<span class="file-size">'+ attSize+ '</span>' : '')+
					   '</a></p>')
					.appendTo($lessonContentsWrapper);
				}

				// preload hover icons
				var $preloadArea = jQuery('<div>').appendTo($lessonContentsWrapper)
					.append('<div class="download-hover-preload">')
					.append('<div class="fancybox-close-hover-preload">')
					.append('<div class="fancybox-next-hover-preload">')
					.append('<div class="fancybox-prev-hover-preload">');

				// add arbitrary html after attachements (from extraHtml)
				if(extraHtml) {
					var extra = createTiddlyElement($lessonContentsWrapper[0],'div','', 'lessonExtras');
					extra.innerHTML = extraHtml;
				}

				// show gallery
				if(isEnvLesson && (imagesData[0][0])) {
				//	var imagesData = JSON.parse(imagesDataJSON).data;

					var capitalize = function(text) {
						return text.charAt(0).toLocaleUpperCase() + text.substr(1);
					};
					var parseTitle = function(fileName) {
						var match = /^[\d\-]+ (.+)\.\w+$/.exec(fileName);
						return capitalize(match ? match[1] : fileName);
					};
					var parseSubtitle = function(authorName,url) {
						if(!authorName) return "";
						return "<a href='"+url+"' target='_blank'>"+
							"Фотография автора "+authorName+"</a>";
					};
					var fixUrl = function(url) {
						return url.replace(/й/gm,"й").replace(/ё/gm,"ё");
					};
					var getThumbUrl = function(customName,imageUrl) {
						return fixUrl(imageFolder+thumbSubfolder+
							(customName || imageUrl));
					};

					jQuery('<ol class="gallery_items"></div>')
						.appendTo($lessonContentsWrapper[0]);
//# escape double-quot symbols!
					var imageData, imageUrl, imageTitle, i;
					for(i = 0; i < imagesData.length; i++) {
						imageData = imagesData[i];
						imageUrl = fixUrl(imageFolder + imageData[0]);
						imageTitle = imageData[1] || parseTitle(imageData[0]);
						jQuery('<a class=fancybox href="'+imageUrl+
						  '" title="'+imageTitle+
						  '" author="'+(imageData[3] || "")+
						  '" author_url="'+(imageData[2] || "")+
						  '" subtitle="'+parseSubtitle(imageData[3],imageData[2])+
						  '"><img src="'+getThumbUrl(imageData[4],imageData[0])+
						  '" alt=""/><p>'+imageTitle+'</p></a>')
/*						jQuery('<a>',{ class: 'fancybox',
							href:		imageUrl,
							title:		imageTitle,
							author:		imageData[3] || "",
							author_url:	imageData[2] || "",
							subtitle: parseSubtitle(imageData[3],imageData[2]),
						}) <img src="'+getThumbUrl(imageData[4],imageData[0])+
						  '" alt=""/><p>'+imageTitle+'</p></a>')
*/						.appendTo(jQuery('.gallery_items')[0])
						.wrap('<li>');
					}
					jQuery(".fancybox")
					    .attr('rel', 'gallery_items')
					    .fancybox({
						afterLoad: function() {
						    var number = this.index + 1,
							title = this.title,
							el = this.element[0],
							author = el.getAttribute('author'),
							a_url = el.getAttribute('author_url'),
							subtitle = parseSubtitle(author,a_url) || "&nbsp;";
					this.title = '<div class="number">'+number+'</div>'+
							'<div class="titles">'+
							   '<span class="main-title">'+title+'</span>' + 
							   '<span class="author-title">'+subtitle+'</span>'+
							'</div>';
						},
						afterShow: function() {
							var overlay = jQuery('.fancybox-overlay')[0];
							jQuery('<div class=download><a href="' + this.href + '" download></a></div>').appendTo(overlay);
//# download attribute is not supported in IE11 ! see https://stackoverflow.com/questions/18578473/
//  may add alert/.. ~Откройте в другом браузере или сохраните картинку, кликнув по ней правой кнопкой мыши~
							jQuery('.fancybox-prev').appendTo(overlay);
							jQuery('.fancybox-next').appendTo(overlay);
							jQuery('.fancybox-close').appendTo(overlay);
//# currently the elements got multiplied (although not visible) – fix this
						},
						helpers: {
							title: { type:"inside" }
						},
						padding : 0 // no padding around image
					    });
				}
			}
		};

		// pick the step (by default "about course")
		selectLesson();
	}
};
window.prevScroll = 0;
jQuery(window).scroll(function()
{
	var menuEl = window.elementToKeepIntoView;
	if(!menuEl) return;
	var container = menuEl.parentElement;
	if(!container) return;
	var height = menuEl.offsetHeight,
	    windowHeight = findWindowHeight(),
	    scrollDown = window.prevScroll < findScrollY(),
	    scrollUp   = window.prevScroll > findScrollY();

	menuEl.style.position = "relative";

	var topLimitByContainer = 0, topLimitByWindow = findScrollY() - findPosY(container) -50,
//# get rid of magic value: it's the container's padding-top in px
	    bottomLimitByContainer = container.offsetHeight -80, //jQuery(container).innerHeight() ?
//# get rid of magic value: it's the container's padding-top + padding-bottom in px
	    bottomLimitByWindow = topLimitByWindow + findWindowHeight() -20,
//# get rid of magic value: presumably, it's the header's margin-top in px

	    //re = /(\-?\d+(?:\.\d+)?)\s?px/i,
	    getPixels = function(value) {
		if(!value) return 0;
		//var match = re.exec(value);
		//if(!match) return parseInt(value);
		return parseInt(value);//match[1]);	//test with non-px values (are they stored in .style.top?)
	    },
	    menuElTopCss = getPixels(menuEl.style.top);

	if(!scrollDown && !scrollUp)
		menuEl.style.top = topLimitByWindow + "px"; //attach top to window top
	if(scrollDown) {
		if(height < windowHeight) {
			if(menuElTopCss < topLimitByWindow) // top edge is higher than that of window
				menuEl.style.top = topLimitByWindow + "px"; //top to top
		} else
			if(menuElTopCss + height < bottomLimitByWindow) // bottom edge higher than that of window
				menuEl.style.top = (bottomLimitByWindow - height) + "px"; //bottom to bottom
	}
	if(scrollUp) {
		if(height < windowHeight)
			menuEl.style.top = topLimitByWindow + "px"; //attach top to window top
		else
			if(menuElTopCss > topLimitByWindow) // top edge lower than that of window
				menuEl.style.top = topLimitByWindow + "px"; //attach top to window top
	}

//# deal with selectLesson 46 (ends up below the bottom of the container)
//  somehow in the  menuElTopCss + height > bottomLimitByContainer  check below  height == 0
//  that's true for each selectLesson firing scroll: height == 0

	// ensure we're inside the container
	menuElTopCss = getPixels(menuEl.style.top);
	if(menuElTopCss < topLimitByContainer)
		menuEl.style.top = topLimitByContainer + "px";
//console.log("height: "+height);
	if(menuElTopCss + height > bottomLimitByContainer)
		menuEl.style.top = (bottomLimitByContainer - height) + "px";

//# make scrolling smoother

	window.prevScroll = findScrollY();
});

config.macros.courseAdminPanel = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		if(!tiddler) return;

		// parametric transclusion is useful for more fluid development
		wikify('<<tiddler [[CourseAdminPanel]] with:[['+tiddler.title+']] noedit>>',place,null,tiddler);
	}
};

// --- common macros ------------------------------------
// make common topLineMenu and footer? use config.macros.siteTopMenu?

// --- make prettyLinks work in a more familiar way -----
// now in OpenInAnotherTabPlugin
/*story.getPermalink = function(title) {
	return window.location.toString().replace(/#.*$/,"")
		+ "#"+encodeURIComponent(String.encodeTiddlyLink(title));
};
var orig_nonUrl_createTiddlyLink = createTiddlyLink;
createTiddlyLink = function(place,title,includeText,className,isStatic,linkedFromTiddler,noToggle)
{
	var btn = orig_nonUrl_createTiddlyLink.apply(this,arguments);
	// this allows to use context menu on right-click
	btn.href = story.getPermalink(title);
//# set a handler for ctrl+click (open in a new tab)
	return btn;
};*/
//}}}
/***
|''Name''|DashesFormattersPlugin|
|''Version''|0.1|
|Short status|<<insertEditable container:"@stateComment" size:max cell>>|
test: a -- b, c --- d, --ef--
----
gh &mdash;
***/
//{{{
for(var i = 0; i < config.formatters.length; i++)
	if(config.formatters[i].name == "mdash") {		
		config.formatters[i].name = "ndash";
		config.formatters[i].handler = function(w) {
			createTiddlyElement(w.output,"span").innerHTML = "&ndash;";
		};
	};
/*config.formatters.splice(i,0,{
	name: "mdash",
	match: "---",
	handler: function(w)
	{
		createTiddlyElement(w.output,"span").innerHTML = "&mdash;";
	}
});*/
//}}}
[[Root]]
/***
|Version|1.4|
{{PoGc{дописать метаданные!}}} Пока у плагина нет документации и т.п., он базируется в репозитории напару с ~GridPlugin
* в версии 1.2 исправлен тот факт, что ":" включался в slice name
* в версии 1.3 изменено поведение в отношении начальных/конечных пробелов/табуляций вокруг slice name
* в версии 1.4 исправлено поведение, когда пробелы в конце "второго столбца" добавляются в slice value
* когда пробел обязательно заменять на \x20? можно ли тут обойтись без этого?
***/
//{{{
TiddlyWiki.prototype.slicesRE = /(?:^([\'\/]{0,2})~?([\.\w]+)\:\1[\t\x20]*([^\n]+)[\t\x20]*$)|(?:^\|\x20?([\'\/]{0,2})~?([^\|\s\:\~\'\/]|(?:[^\|\s~\'\/][^\|\n\f\r]*[^\|\s\:\'\/]))\:?\4[\x20\t]*\|[\t\x20]*([^\n\t\x20](?:[^\n]*[^\n\t\x20])?)[\t\x20]*\|$)/gm;
store.slices = {};
//}}}
/***
|''Version''|1.4|
|''Requires''|UpToDateFiltersPlugin|
|~|requires http://yakovl.bplaced.net/TW/ExtraFilters.html#UpToDateFiltersPlugin only if TW core version is 2.6.1 or below|
|''Source''|http://yakovl.bplaced.net/TW/ExtraFilters.html#ExtraFiltersPlugin|
|''Documentation''|http://yakovl.bplaced.net/TW/ExtraFilters.html#ExtraFiltersPluginInfo|
|''Author''|Yakov Litvin|
|''Licence''|[[BSD-like open source license|http://yakovl.bplaced.net/TW/ExtraFilters.html#%5B%5BYakov%20Litvin%20Public%20Licence%5D%5D]] |
***/
//{{{
if(!config.filters.all)
	config.filters.all = function(results,match) { // v1.0
		this.forEachTiddler(function(tName,tiddler){
			results.pushUnique(tiddler);
		});
		return results;
	};
config.filters.and = function(results,match) { // v1.0

	// parse the argument as "filterName[filterParam"
	var dividingRE = /([^\[\]]+)\[([^\]]*)/,
	    filterParts = dividingRE.exec(match[3]);
	if(filterParts) {
		var filterName  = filterParts[1],
		    filterParam = filterParts[2];
	} else
		throw("\"and\" filter: wrong syntax");

	// create the set of filtered tiddlers
	var filter = "[" + filterName + "[" + filterParam + "]]",
	    tids = this.filterTiddlers(filter),
	    newResult = [];

	// collect tiddlers present among both "results" and filtered tiddlers
	for(var i = 0; i < results.length; i++)
		for(var j = 0; j < tids.length; j++)
			if(results[i] == tids[j])
				newResult.push(tids[j]);

	return newResult;
};
config.filters.not = function(results,match) { // v1.0

	// parse the argument as "filterName[filterParam"
	var dividingRE = /([^\[\]]*)\[([^\]]*)/,
	    filterParts = dividingRE.exec(match[3]);
	if(filterParts) {
		var filterName  = filterParts[1],
		    filterParam = filterParts[2];
	} else
		throw("\"not\" filter: wrong syntax");

	// create the set of filtered tiddlers
	var filter = "[" + filterName + "[" + filterParam + "]]",
	    tids = this.filterTiddlers(filter);

	// collect tiddlers present among "results", but not among filtered tiddlers
	for(var i = 0; i < results.length; i++)
		for(var j = 0; j < tids.length; j++)
			if(results[i] == tids[j]) {
				results.splice(i,1);
				i--;
				tids.splice(j,1);
				break;
			}

	return results;
};
config.filters.tagTree = function(results, match)
{
	results = results || [];

	var depthRE = /^(\d),(.+)$/, depthMatch = depthRE.exec(match[3]),
	    depth = depthMatch ? parseInt(depthMatch[1]) : -1, currentDepth = 0,
	    root = depthMatch ? depthMatch[2] : match[3], tags = [root], prevLength,
	    i, tagTags, j;

	var rootTid = store.fetchTiddler(root);
	if(rootTid) results.pushUnique(rootTid);

	// get tags, tags of tags etc ;
	// for optimization, push to results inline
	do {
		prevLength = tags.length;
		for(i = 0; i < prevLength; i++) //may be optimized by starting from i = ..
		{
			tagTags = store.getTaggedTiddlers(tags[i]);
			for(j = 0; j < tagTags.length; j++) {
				tags.pushUnique(tagTags[j].title);

				// optimized place to push:
				results.pushUnique(tagTags[j]);
			}
		}
		currentDepth++;
	} while (tags.length > prevLength && currentDepth != depth);

	return results;
};
config.filters.unclassified = function(results,match) { // v1.0

	var category = match[3],
	    instances = this.getTaggedTiddlers(category);

	// filter out tiddlers tagged with instances
	for(var i = 0; i < results.length; i++)
		for(var j = 0; j < instances.length; j++)

			if(results[i].isTagged(instances[j].title)) {
				results.splice(i,1);
				i--;
				break;
			}

	return results;
};
config.filters.taggedOnly =
config.filters.oTag = function(results, match) { // v1.0

	// parse param
	var add = true, arg = match[3], i;
	switch(arg.substr(0,1)) {
		case "+":
			// "add" is "true" already
			arg = arg.substr(1);
			break;
		case "-":
			add = false;
			arg = arg.substr(1);
			break;
	}

	var isTaggedOnly = function(tiddler,arg) {

		return (tiddler.tags.length == 1) && (!arg || arg == tiddler.tags[0])
	};

	if(add) {
		var tiddlers = this.reverseLookup();
		for(i = 0; i < tiddlers.length; i++)
			if(isTaggedOnly(tiddlers[i],arg))
				results.pushUnique(tiddlers[i]);
	} else {
		for(i = 0; i < results.length; i++)
			if(!isTaggedOnly(results[i],arg))
				results.splice(i--,1);
	}

	return results;
};
config.filters.hasPart = function (results, match) { // v1.1

	// parse the argument
	var arg = match[3], reText, re, type, isBad, title;

	switch(arg.substr(0,2)) {
		case "##":
		case "::":
			isBad = function(title) {
				return store.getTiddlerText(title + arg) ? false : true;
			};
			break
		case "@@":
			isBad = function(title) {
				return store.getValue(title, arg.substr(2)) ? false : true;
			};
			break
		case "r@": // regExp (for tiddler.text) mode
		case "R@":
		case "t@": // title mode
		case "T@":
			reText = store.getTiddlerText(arg.substr(2));
			type = arg.substr(0,1);
			if(!reText)
				if(type == "r" || type == "t")
					return results; // "forgiving mode", nothing is filtered out in this case
				else
					throw("RegExp for filtering is not found in " + arg.substr(2));

			// no break here
		case "r[":
		case "R[":
		case "t[":
		case "T[":
			if(!reText) {
				reText = arg.substr(2);
				type = arg.substr(0,1);
			}

			if(type == "r" || type == "t") {
				try {
					re = new RegExp(reText);
				} catch(e) {
					return results; // "forgiving mode"
				}
			} else
				re = new RegExp(reText);

			if(type == "r" || type == "R")
				isBad = function(title) {
					return results[i].text.match(re) ? false : true;
				};
			else
				isBad = function(title) {
					return title.match(re) ? false : true;
				};
			break
		default:
			return results;
	}

	// filter out corresponding tiddlers
	for(var i = 0; i < results.length; i++) {

		title = results[i].title;

		if(isBad(title)) {
			results.splice(i,1);
			i--;
		}
	};
	return results;
};
config.filters.sortByText = function (results, match) { // v1.1

	// parse the argument
	var arg = match[3],
	    ascending = +1;
	switch(arg.substr(0,1)) {
		case "-":
			ascending = -1;
			arg = arg.substr(1);
			break;
		case "+":
			arg = arg.substr(1);
			break;
	}

	// use the rest of the argument to get corresponding section/slice
	var partSuffix = (arg.substr(0,2) == "::" || arg.substr(0,2) == "##") ?
			arg : "";

	var self = this;
	var compareText = function(t1,t2) {
		var text1 = self.getTiddlerText(t1.title + partSuffix),
		    text2 = self.getTiddlerText(t2.title + partSuffix);
		if(text1 && text2)
			return text1.localeCompare(text2);
		if(text1)
			return -1;
		if(text2)
			return 1;
		return 0;
	};

	return results.sort(compareText);
};
orig_sortFilter = config.filters.sort;
config.filters.sort = function(results,match) { // sort: random, v1.0

	if(match[3] === "*random") {

		var auxiliaryArray = [],
		    size = results.length;
		var swap = function(i, j) {
			var tmp1 = auxiliaryArray[i];
			auxiliaryArray[i] = auxiliaryArray[j];
			auxiliaryArray[j] = tmp1;
			var tmp2 = results[i];
			results[i] = results[j];
			results[j] = tmp2;
		};

		for(var i = 0; i < size; i++)
			auxiliaryArray.push(Math.random());

		for(var j = 0; j < size; j++)
			for(var i = 0; i < size - j; i++)
				if(auxiliaryArray[i] < auxiliaryArray[i+1])
					swap(i,i+1);
		return results;
	} else
		return orig_sortFilter.apply(this, arguments);
};
config.filters.from = function(results,match) { // v1.0
	var filter = this.getTiddlerText(match[3],""),
	    tiddlers = this.filterTiddlers(filter);

	for(var i = 0; i < tiddlers.length; i++)
		results.pushUnique(tiddlers[i]);

	return results;
};
//}}}
/***
|''Name''|FancyBox2Plugin|
|''Description''|Adds a macro to create image galleries via the fancyBox lib|
|''Version''|0.9.6|
|''Source''|http://yakovl.bplaced.net/TW/ImagesTools/ImageGalleries.html#FancyBox2Plugin|
|''Documentation''|http://yakovl.bplaced.net/TW/ImagesTools/ImageGalleries.html#FancyBox2PluginInfo|
|''Author''|Yakov Litvin|
|''Licence''|[[BSD-like open source license|http://yakovl.bplaced.net/TW/ImagesTools/ImageGalleries.html#%5B%5BYakov%20Litvin%20Public%20Licence%5D%5D]]|
***/
// // Here goes minified and hidden fancyBox v2.1.5 (from fancyapps.com, [[license|fancyapps.com/fancybox/#license]]) /%

(function(r,G,f,v){var J=f("html"),n=f(r),p=f(G),b=f.fancybox=function(){b.open.apply(this,arguments)},I=navigator.userAgent.match(/msie/i),B=null,s=G.createTouch!==v,t=function(a){return a&&a.hasOwnProperty&&a instanceof f},q=function(a){return a&&"string"===f.type(a)},E=function(a){return q(a)&&0<a.indexOf("%")},l=function(a,d){var e=parseInt(a,10)||0;d&&E(a)&&(e*=b.getViewport()[d]/100);return Math.ceil(e)},w=function(a,b){return l(a,b)+"px"};f.extend(b,{version:"2.1.5",defaults:{padding:15,margin:20,
width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,pixelRatio:1,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!s,fitToView:!0,aspectRatio:!1,topRatio:0.5,leftRatio:0.5,scrolling:"auto",wrapCSS:"",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},iframe:{scrolling:"auto",preload:!0},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},
keys:{next:{13:"left",34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+
(I?' allowtransparency="true"':"")+"></iframe>",error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',next:'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,
openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,
isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k,
c.metadata())):k=c);g=d.href||k.href||(q(c)?c:null);h=d.title!==v?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));q(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":q(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(q(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&&
k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==v&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current||
b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=
setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index<b.group.length-1))b.player.isActive=!0,p.bind({"onCancel.player beforeClose.player":c,"onUpdate.player":e,"beforeLoad.player":d}),e(),b.trigger("onPlayStart")}else c()},next:function(a){var d=b.current;d&&(q(a)||(a=d.direction.next),b.jumpto(d.index+1,a,"next"))},prev:function(a){var d=b.current;
d&&(q(a)||(a=d.direction.prev),b.jumpto(d.index-1,a,"prev"))},jumpto:function(a,d,e){var c=b.current;c&&(a=l(a),b.direction=d||c.direction[a>=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==v&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({},e.dim,k)))},update:function(a){var d=
a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(B),B=null);b.isOpen&&!B&&(B=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),B=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),b.trigger("onUpdate")),
b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('<div id="fancybox-loading"><div></div></div>').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||!1,d={x:n.scrollLeft(),
y:n.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&r.innerWidth?r.innerWidth:n.width(),d.h=s&&r.innerHeight?r.innerHeight:n.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");n.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(n.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k=e.target||e.srcElement;
if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1<a.group.length&&k[c]!==v)return b[d](k[c]),e.preventDefault(),!1;if(-1<f.inArray(c,k))return b[d](),e.preventDefault(),!1})}),f.fn.mousewheel&&a.mouseWheel&&b.wrap.bind("mousewheel.fb",function(d,c,k,g){for(var h=f(d.target||null),j=!1;h.length&&!j&&!h.is(".fancybox-skin")&&!h.is(".fancybox-wrap");)j=h[0]&&!(h[0].style.overflow&&"hidden"===h[0].style.overflow)&&
(h[0].clientWidth&&h[0].scrollWidth>h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1<b.group.length&&!a.canShrink){if(0<g||0<k)b.prev(0<g?"down":"left");else if(0>g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&&b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,
{},b.helpers[d].defaults,e),c)});p.trigger(a)}},isImage:function(a){return q(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return q(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,
mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=
!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,w(d.padding[a]))});b.trigger("onReady");if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");
"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=
this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href);
f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,
e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents();e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,
outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("<div>").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('<div class="fancybox-placeholder"></div>').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",!1)}));break;case "image":e=a.tpl.image.replace("{href}",
g);break;case "swf":e='<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'+g+'"></param>',h="",f.each(a.swf,function(a,b){e+='<param name="'+a+'" value="'+b+'"></param>';h+=" "+a+'="'+b+'"'}),e+='<embed src="'+g+'" type="application/x-shockwave-flash" width="100%" height="100%"'+h+"></embed></object>"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow");a.inner.css("overflow","yes"===k?"scroll":
"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth,p=h.maxHeight,s=h.scrolling,q=h.scrollOutside?
h.scrollbarWidth:0,x=h.margin,y=l(x[1]+x[3]),r=l(x[0]+x[2]),v,z,t,C,A,F,B,D,H;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");x=l(k.outerWidth(!0)-k.width());v=l(k.outerHeight(!0)-k.height());z=y+x;t=r+v;C=E(c)?(a.w-z)*l(c)/100:c;A=E(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(H=h.content,h.autoHeight&&1===H.data("ready"))try{H[0].contentWindow.document.location&&(g.width(C).height(9999),F=H.contents().find("body"),q&&F.css("overflow-x","hidden"),A=F.outerHeight(!0))}catch(G){}}else if(h.autoWidth||
h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass("fancybox-tmp");c=l(C);j=l(A);D=C/A;m=l(E(m)?l(m,"w")-z:m);n=l(E(n)?l(n,"w")-z:n);u=l(E(u)?l(u,"h")-t:u);p=l(E(p)?l(p,"h")-t:p);F=n;B=p;h.fitToView&&(n=Math.min(a.w-z,n),p=Math.min(a.h-t,p));z=a.w-y;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/D)),j>p&&(j=p,c=l(j*D)),c<m&&(c=m,j=l(c/D)),j<u&&(j=u,c=l(j*D))):(c=Math.max(m,Math.min(c,n)),h.autoHeight&&
"iframe"!==h.type&&(g.width(c),j=g.height()),j=Math.max(u,Math.min(j,p)));if(h.fitToView)if(g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height(),h.aspectRatio)for(;(a>z||y>r)&&(c>m&&j>u)&&!(19<d++);)j=Math.max(u,Math.min(p,j-10)),c=l(j*D),c<m&&(c=m,j=l(c/D)),c>n&&(c=n,j=l(c/D)),g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height();else c=Math.max(m,Math.min(c,c-(a-z))),j=Math.max(u,Math.min(j,j-(y-r)));q&&("auto"===s&&j<A&&c+x+q<z)&&(c+=q);g.width(c).height(j);e.width(c+x);a=e.width();
y=e.height();e=(a>z||y>r)&&c>m&&j>u;c=h.aspectRatio?c<F&&j<B&&c<C&&j<A:(c<F||j<B)&&(c<C||j<A);f.extend(h,{dim:{width:w(a),height:w(y)},origWidth:C,origHeight:A,canShrink:e,canExpand:c,wPadding:x,hPadding:v,wrapSpace:y-k.outerHeight(!0),skinSpace:k.height()-j});!H&&(h.autoHeight&&j>u&&j<p&&!c)&&g.height("auto")},_getPosition:function(a){var d=b.current,e=b.getViewport(),c=d.margin,f=b.wrap.width()+c[1]+c[3],g=b.wrap.height()+c[0]+c[2],c={position:"absolute",top:c[0],left:c[3]};d.autoCenter&&d.fixed&&
!a&&g<=e.h&&f<=e.w?c.position="fixed":d.locked||(c.top+=e.y,c.left+=e.x);c.top=w(Math.max(c.top,c.top+(e.h-g)*d.topRatio));c.left=w(Math.max(c.left,c.left+(e.w-f)*d.leftRatio));return c},_afterZoomIn:function(){var a=b.current;a&&(b.isOpen=b.isOpened=!0,b.wrap.css("overflow","visible").addClass("fancybox-opened"),b.update(),(a.closeClick||a.nextClick&&1<b.group.length)&&b.inner.css("cursor","pointer").bind("click.fb",function(d){!f(d.target).is("a")&&!f(d.target).parent().is("a")&&(d.preventDefault(),
b[a.closeClick?"close":"next"]())}),a.closeBtn&&f(a.tpl.closeBtn).appendTo(b.skin).bind("click.fb",function(a){a.preventDefault();b.close()}),a.arrows&&1<b.group.length&&((a.loop||0<a.index)&&f(a.tpl.prev).appendTo(b.outer).bind("click.fb",b.prev),(a.loop||a.index<b.group.length-1)&&f(a.tpl.next).appendTo(b.outer).bind("click.fb",b.next)),b.trigger("afterShow"),!a.loop&&a.index===a.group.length-1?b.play(!1):b.opts.autoPlay&&!b.player.isActive&&(b.opts.autoPlay=!1,b.play()))},_afterZoomOut:function(a){a=
a||b.current;f(".fancybox-wrap").trigger("onReset").remove();f.extend(b,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null});b.trigger("afterClose",a)}});b.transitions={getOrigPosition:function(){var a=b.current,d=a.element,e=a.orig,c={},f=50,g=50,h=a.hPadding,j=a.wPadding,m=b.getViewport();!e&&(a.isDom&&d.is(":visible"))&&(e=d.find("img:first"),e.length||(e=d));t(e)?(c=e.offset(),e.is("img")&&(f=e.outerWidth(),g=e.outerHeight())):
(c.top=m.y+(m.h-g)*a.topRatio,c.left=m.x+(m.w-f)*a.leftRatio);if("fixed"===b.wrap.css("position")||a.locked)c.top-=m.y,c.left-=m.x;return c={top:w(c.top-h*a.topRatio),left:w(c.left-j*a.leftRatio),width:w(f+j),height:w(g+h)}},step:function(a,d){var e,c,f=d.prop;c=b.current;var g=c.wrapSpace,h=c.skinSpace;if("width"===f||"height"===f)e=d.end===d.start?1:(a-d.start)/(d.end-d.start),b.isClosing&&(e=1-e),c="width"===f?c.wPadding:c.hPadding,c=a-c,b.skin[f](l("width"===f?c:c-g*e)),b.inner[f](l("width"===
f?c:c-g*e-h*e))},zoomIn:function(){var a=b.current,d=a.pos,e=a.openEffect,c="elastic"===e,k=f.extend({opacity:1},d);delete k.position;c?(d=this.getOrigPosition(),a.openOpacity&&(d.opacity=0.1)):"fade"===e&&(d.opacity=0.1);b.wrap.css(d).animate(k,{duration:"none"===e?0:a.openSpeed,easing:a.openEasing,step:c?this.step:null,complete:b._afterZoomIn})},zoomOut:function(){var a=b.current,d=a.closeEffect,e="elastic"===d,c={opacity:0.1};e&&(c=this.getOrigPosition(),a.closeOpacity&&(c.opacity=0.1));b.wrap.animate(c,
{duration:"none"===d?0:a.closeSpeed,easing:a.closeEasing,step:e?this.step:null,complete:b._afterZoomOut})},changeIn:function(){var a=b.current,d=a.nextEffect,e=a.pos,c={opacity:1},f=b.direction,g;e.opacity=0.1;"elastic"===d&&(g="down"===f||"up"===f?"top":"left","down"===f||"right"===f?(e[g]=w(l(e[g])-200),c[g]="+=200px"):(e[g]=w(l(e[g])+200),c[g]="-=200px"));"none"===d?b._afterZoomIn():b.wrap.css(e).animate(c,{duration:a.nextSpeed,easing:a.nextEasing,complete:b._afterZoomIn})},changeOut:function(){var a=
b.previous,d=a.prevEffect,e={opacity:0.1},c=b.direction;"elastic"===d&&(e["down"===c||"up"===c?"top":"left"]=("up"===c||"left"===c?"-":"+")+"=200px");a.wrap.animate(e,{duration:"none"===d?0:a.prevSpeed,easing:a.prevEasing,complete:function(){f(this).trigger("onReset").remove()}})}};b.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!s,fixed:!0},overlay:null,fixed:!1,el:f("html"),create:function(a){a=f.extend({},this.defaults,a);this.overlay&&this.close();this.overlay=
f('<div class="fancybox-overlay"></div>').appendTo(b.coming?b.coming.parent:a.parent);this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(n.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?
b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){var a,b;n.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),a=n.scrollTop(),b=n.scrollLeft(),this.el.removeClass("fancybox-lock"),n.scrollTop(a).scrollLeft(b));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%");I?(b=Math.max(G.documentElement.offsetWidth,G.body.offsetWidth),
p.width()>b&&(a=p.width())):p.width()>n.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&(this.fixed&&b.fixed)&&(e||(this.margin=p.height()>n.height()?f("html").css("margin-right").replace("px",""):!1),b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){var e,c;b.locked&&(!1!==this.margin&&(f("*").filter(function(){return"fixed"===
f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin")),e=n.scrollTop(),c=n.scrollLeft(),this.el.addClass("fancybox-lock"),n.scrollTop(e).scrollLeft(c));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=
b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(q(e)&&""!==f.trim(e)){d=f('<div class="fancybox-title fancybox-title-'+c+'-wrap">'+e+"</div>");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),I&&d.width(d.width()),d.wrapInner('<span class="child"></span>'),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,
e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+'"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):p.undelegate(c,"click.fb-start").delegate(c+
":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===v&&(f.scrollbarWidth=function(){var a=f('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===v){a=f.support;d=f('<div style="position:fixed;top:20px;"></div>').appendTo("body");var e=20===
d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(r).width();J.addClass("fancybox-lock-test");d=f(r).width();J.removeClass("fancybox-lock-test");f("<style type='text/css'>.fancybox-margin{margin-right:"+(d-a)+"px;}</style>").appendTo("head")})})(window,document,jQuery);
// %/
//{{{
// set CSS without changing StyleSheet
var css = store.getTiddlerText("FancyBox2Plugin##StyleSheetFancyBox"),
    shadowName = "StyleSheetFancyBox";
commentRegExp = /\/%%%(.*?)%%%\//g;
css = css.replace(commentRegExp,'/*$1*/');
config.shadowTiddlers[shadowName] = "/*{{{*/\n"+css.substring(4,css.length-4)+"\n/*}}}*/";
store.addNotification(shadowName, refreshStyles);

// define the macro
config.macros.fancyBox = {};
config.macros.fancyBox.handler = 
function(place, macroName, params, wikifier, paramString, tiddler)
{	
	// build a gallery id based on the "hash" of the macro text
	var macroTWcode = wikifier.source.substring(wikifier.matchStart, wikifier.nextMatch),
	    galleryId = macroTWcode.replace(/['"<>\n]/g,"");
	
	// parse params, build the images' data
	var pParams = paramString.parseParams("image",null,true,false,true),
	    imagesData = [], i, j,
	    images = pParams[0]["image"],
	    forEachImageParams = { "thumb":1, "title":1, "label":1 },
	    //thumbs = pParams[0]["thumb"],
	    align  = getParam(pParams,"align",""),
	    inline = getParam(pParams,"inline",paramString.match(/\sinline(\s|$)/gm)),
	    float  = getParam(pParams,"float",""),
	    folder = getParam(pParams,"folder",""),
	    thumbFolder = getParam(pParams,"thumbFolder",folder),
	    config = getParam(pParams,"config",""),
	    userGalleryId = getParam(pParams,"galleryId","");
	//# either parse the folder param here or introduce a global txtGalleriesFolder param or both
	galleryId = userGalleryId || galleryId;
	
	// get global params that define styles for each image/wrapper
	var imagesParamRegExp   =   /images-([\w\-]+)/,
	    wrappersParamRegExp = /wrappers-([\w\-]+)/,
	    removeDashes = function(str) {
		    return str.replace(/-(\w)/g,
				       function($0,$1){ return $1.toUpperCase(); });
	    },
	    p, match,
	    imagesParams   = {},
	    wrappersParams = {};
	for(p in pParams[0]) {
		if(match = imagesParamRegExp.exec(p))
			imagesParams[removeDashes(match[1])] = pParams[0][p][0];
		if(match = wrappersParamRegExp.exec(p))
			wrappersParams[removeDashes(match[1])] = pParams[0][p][0];
	}
	
	// parse fancyBox params from config
	try{ config = eval("(function(){return "+config+"})()") }catch(e){config="";}
	
	if(!images) {
		createTiddlyError(place, "wrong macro usage (click here for details)", 'there should be at least one "image" argument (first anonymous params are also considered as "image"s)');
		return;
	}
	// find the index of the first image param; see if all the "image"s go next
	for(i = 1; i < pParams.length; i++)
		if(pParams[i].name == "image")
			break;
	var allImageParamsGoOneByOne = true;
	for(j = 0; j < images.length; j++)
		if(pParams[i+j].name != "image") {
			allImageParamsGoOneByOne = false;
			break;
		}
	
	var feiParam, k, feipValues;
	if(allImageParamsGoOneByOne)
	{
		for(i = 0; i < images.length; i++)
			imagesData.push({ link: images[i] });
		
		for(feiParam in forEachImageParams)
			if(feipValues = pParams[0][feiParam])
				for(i = 0; i < feipValues.length; i++)
					if(imagesData[i])
						imagesData[i][feiParam] = feipValues[i];
	} else
		for(j = 0; i < pParams.length; i++) // i is not reset by intent
		{
			if(pParams[i].name == "image")
				imagesData[j++] = { link: pParams[i].value };
			
			for(feiParam in forEachImageParams)
				if(pParams[i].name == feiParam)
					imagesData[j-1][feiParam] = pParams[i].value;
		}
	
	// -----------------------------------------------------------
	// create the images, wrappers and other stuff
	var imagesHolder = createTiddlyElement(place,"div",null,"gallery");
	if(inline)
		imagesHolder.style.display = "inline-block";
	if(align)
		imagesHolder.style.align = align;
	if(float) {
		imagesHolder.style.display = "inline-block";
		// doesn't work properly yet
		// see the successful solution among tests
		imagesHolder.style.float = float;
	}
	
	var getFullPath = function(file,folder) {
		if(!folder)
			return file;
		return folder+"/"+file;
	}
	var imageHolder, image, link, title;
	for(i = 0; i < imagesData.length; i++)
	{
		link = getFullPath(imagesData[i].link,folder);
		
		imageHolder = createTiddlyElement(imagesHolder,"a",null,"fancybox");
		// work as a gallery, if there's more then one image:
		if(imagesData.length > 1 || userGalleryId)
			imageHolder.setAttribute("data-fancybox-group",galleryId);
		// add href, this is important for proper size setting and images not being hidden:
		imageHolder.setAttribute("href",link);
		title = imagesData[i].label || imagesData[i].title;
		if(title)
			imageHolder.title = title;
		
		// thumb may be image path or "html: myHTML"
		var thumb = imagesData[i].thumb,
		    htmlMatch = thumb ? /^html:((?:.|\n)+)/mg.exec(thumb) : null,
		    html = htmlMatch ? htmlMatch[1] : "";
		if(html)
			imageHolder.innerHTML = html;
		else {
			// "thumbnail" image (shown when fancybox is not activated):
			image = createTiddlyElement(imageHolder,"img");
			image.src = thumb ? getFullPath(thumb,thumbFolder) : link;
		
			var setThisHere = function(element,property,value) {
				if(property == "class")
					element.classList.add(value)
				else
					element.style[property] = value;
			};
			for(p in imagesParams)
				setThisHere(image,p,imagesParams[p]);
			for(p in wrappersParams)
				setThisHere(imageHolder,p,wrappersParams[p]);
		}
	}
	
	// activate fancyBox
	if(imagesData.length > 1 || userGalleryId)
		jQuery('a[data-fancybox-group="'+galleryId+'"]').fancybox(config);
	else
		jQuery(imageHolder).fancybox(config);
};
//}}}
/***
!!!StyleSheetFancyBox
{{{
/%%% ~my additions %%%/
.gallery .fancybox img		{ max-width: 24%; margin-left: 0.5%; margin-right: 0.5%; }

/%%% hacks to fight the StyleSheetColors' a:hover {background-color:[[ColorPalette::PrimaryMid]]; rule (part of a rule): %%%/

.fancybox:hover,
a[class~="fancybox-prev"]:hover,
a[class~="fancybox-next"]:hover	{ background-color:inherit; }
a[class~="fancybox-close"]:hover { background-color: rgba(255, 255, 255, 0); }

/%%%! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license %%%/
/%%% YL modifications: all images were converted to base64 and inserted here %%%/
.fancybox-wrap,
.fancybox-skin,
.fancybox-outer,
.fancybox-inner,
.fancybox-image,
.fancybox-wrap iframe,
.fancybox-wrap object,
.fancybox-nav,
.fancybox-nav span,
.fancybox-tmp
{
	padding: 0;
	margin: 0;
	border: 0;
	outline: none;
	vertical-align: top;
}

.fancybox-wrap {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 8020;
}

.fancybox-skin {
	position: relative;
	background: #f9f9f9;
	color: #444;
	text-shadow: none;
	-webkit-border-radius: 4px;
	   -moz-border-radius: 4px;
	        border-radius: 4px;
}

.fancybox-opened {
	z-index: 8030;
}

.fancybox-opened .fancybox-skin {
	-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
	   -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
	        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
}

.fancybox-outer, .fancybox-inner {
	position: relative;
}

.fancybox-inner {
	overflow: hidden;
}

.fancybox-type-iframe .fancybox-inner {
	-webkit-overflow-scrolling: touch;
}

.fancybox-error {
	color: #444;
	font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
	margin: 0;
	padding: 15px;
	white-space: nowrap;
}

.fancybox-image, .fancybox-iframe {
	display: block;
	width: 100%;
	height: 100%;
}

.fancybox-image {
	max-width: 100%;
	max-height: 100%;
}

#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAACYCAMAAACoAftQAAAAvVBMVEUAAAAAAAAAAAAODg4AAAAAAAAAAADNzc0BAQHZ2dkDAwMHBwcAAADf398CAgI/Pz8BAQEAAACCgoIcHBzl5eUAAAC/v7/x8fEGBgZnZ2cAAADs7OwGBgb4+Pg/Pz/Jycmenp5nZ2f39/eDg4MAAADQ0ND4+Piurq7a2tr8/Pzs7OwAAAD5+fn9/f3e3t4AAAD///9OTk7BwcE1NTWsrKyNjY2cnJx6enpdXV1oaGgsLCy6uroiIiLOzs5BQUFt3PCNAAAAL3RSTlMAAQMIDRIZHSMnLTpESFNVXWlpbG15en+HiZCWoaGssrO2vsDFydPU3uL4+fr9/Ywv6xsAAAQVSURBVHhe7JZbc6JMGIQXAUOQEMi3uMYkrmopZgqs5ujZ//+zvpdNzMsMlli1N3uRvtCbpzo9I+nmhyqN9OO6GNQ6Ha1SG0mcrhskXe90rvKE6kbX7r9MF4vp2887nfBrqPW0xJemD4w32e7jHIj2602SbNZ7Qfgd0zJLtgKi2B0+tSsE3h8u0RX7HGGfHWrK9oiIbrK69SiQHxTliO5VWtP0rrNEemhoj6muaYqx2XuGyJrwbgUKohhb3hIFM6wCC7Zm4+M5Zs5fpKNiTYndEOUHDFRYCeADLvGiy7DtL7E5/12gJPacalPlqEc2eoFAdmCa2UOGyOhoUuQgwo7PxCwJMGXYGcQMlyCVX3DchCkGs3V6h0iFgyUSZsuS6QQLGaYDhueUHxhf3RpzOqB8dRMcz84lf5FS9A1Ngi2PQm8PF7RBZOnEyqFnSC/BKX6bHQmucpB13mRzCJtTsPUowlpl14if2JifUXcwgeqdA2OLn1C+PdsbzCKkW0a3KeKxbbAxF4FJ9EgAaXGqyFORAuLZNrkMZNoNKnNS9PE5dpltFofjB4PJXIAk5rP/HMu4Ukmm7XjEkwLfc2yT66tJk7lp2T2H1LMtk2wVVsWpcE0SlW4DbeLE/xG3eRvfQv7Fptw4KvpDNRKLt1/3rZty/xbjrPef1+5D018ITYttkiTrfAUsrmzK3RTIT/woHxH3DaZl9h2rRH2aX0ydaYb1BVK1zNdA32RvNn7DkVmmoyeVJvYBMcdl5Vg2/lW0zpSbUNIKT12KLV8wVjsmNvGW63feU3qj86veGQmAA1e5qzbStNZdmVTlRzzbSjG+4+t4u1iqjxxjR6pczaiNBCCVXoGx25X7mUNGgJBHM/QsXWp+dk4U5xJjX4EXSM7ACcCxnnnm2zI8rxVoFgMr/lUwUpyNPvYVx/eRfaUSQzkzLWxEOVhiwynCAd2GvCm/2bquBPEo+LxnDv0YXdyfFOHQP+8EV/kY0enSorxyitoLxxwiabDRqDImWF2JJVBIeVNEk2HgsDGn7vkhcPy67lMOiBGF4AGS3tX8yYqAfb5eF/kRiMPX4cDjEDLd8wezJT4lwtHrMHBtbg6V9oLhYDYLw3A2eSVbn0elSdMCecFg+Ee0Kq7dlftLXSCrRxNE8lzH7hp0Nu3qpHQty7Ztq2sabHvtpb/SLauisVTye1O+N2Ubbxhu2xSAq6x1UwoAWfum8P3Gu5ZNYaUA2jaFJYCofVPYOWnZFD4TcLpxU1ZAnN24KRnfxQ2bshEE/Vub8r0p35vi/t9eHRoBDMNQDJUvMLkOkDMM+8D7b9cR+kOKLPy4juojnQeAkWWVAyLLLINVdovj44N8LOqi/3Djxo0bN5ZvdbWJuwHhrw2ILYdqBwDT2fEEXtrZFmVcCWLiAAAAAElFTkSuQmCC");
}

#fancybox-loading {
	position: fixed;
	top: 50%;
	left: 50%;
	margin-top: -22px;
	margin-left: -22px;
	background-position: 0 -108px;
	opacity: 0.8;
	cursor: pointer;
	z-index: 8060;
}

#fancybox-loading div {
	width: 44px;
	height: 44px;
	background: url("data:image/gif;base64,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") center center no-repeat;
}

.fancybox-close {
	position: absolute;
	top: -18px;
	right: -18px;
	width: 36px;
	height: 36px;
	cursor: pointer;
	z-index: 8040;
}

.fancybox-nav {
	position: absolute;
	top: 0;
	width: 40%;
	height: 100%;
	cursor: pointer;
	text-decoration: none;
	background: transparent url("data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); /%%% helps IE %%%/
	-webkit-tap-highlight-color: rgba(0,0,0,0);
	z-index: 8040;
}

.fancybox-prev {
	left: 0;
}

.fancybox-next {
	right: 0;
}

.fancybox-nav span {
	position: absolute;
	top: 50%;
	width: 36px;
	height: 34px;
	margin-top: -18px;
	cursor: pointer;
	z-index: 8040;
	visibility: hidden;
}

.fancybox-prev span {
	left: 10px;
	background-position: 0 -36px;
}

.fancybox-next span {
	right: 10px;
	background-position: 0 -72px;
}

.fancybox-nav:hover span {
	visibility: visible;
}

.fancybox-tmp {
	position: absolute;
	top: -99999px;
	left: -99999px;
	max-width: 99999px;
	max-height: 99999px;
	overflow: visible !important;
}

/%%% Overlay helper %%%/

.fancybox-lock {
    overflow: visible !important;
    width: auto;
}

.fancybox-lock body {
    overflow: hidden !important;
}

.fancybox-lock-test {
    overflow-y: hidden !important;
}

.fancybox-overlay {
	position: absolute;
	top: 0;
	left: 0;
	overflow: hidden;
	display: none;
	z-index: 8010;
	background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpCMEM4NDgzQjlDRTNFMTExODE4NUVDOTdFQ0I0RDgxRSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGREU5OEVCQzAzMjYxMUUyOTg5OURDMDlDRTJDMTc0RSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGREU5OEVCQjAzMjYxMUUyOTg5OURDMDlDRTJDMTc0RSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkIxQzg0ODNCOUNFM0UxMTE4MTg1RUM5N0VDQjREODFFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkIwQzg0ODNCOUNFM0UxMTE4MTg1RUM5N0VDQjREODFFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+s3YRAQAAABtJREFUeNpiFODh2cBABGBiIBKMKqSOQoAAAwBokQDs5F/8FAAAAABJRU5ErkJggg==");
}

.fancybox-overlay-fixed {
	position: fixed;
	bottom: 0;
	right: 0;
}

.fancybox-lock .fancybox-overlay {
	overflow: auto;
	overflow-y: scroll;
}

/%%% Title helper %%%/

.fancybox-title {
	visibility: hidden;
	font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
	position: relative;
	text-shadow: none;
	z-index: 8050;
}

.fancybox-opened .fancybox-title {
	visibility: visible;
}

.fancybox-title-float-wrap {
	position: absolute;
	bottom: 0;
	right: 50%;
	margin-bottom: -35px;
	z-index: 8050;
	text-align: center;
}

.fancybox-title-float-wrap .child {
	display: inline-block;
	margin-right: -100%;
	padding: 2px 20px;
	background: transparent; /%%% Fallback for web browsers that doesn't support RGBa %%%/
	background: rgba(0, 0, 0, 0.8);
	-webkit-border-radius: 15px;
	   -moz-border-radius: 15px;
	        border-radius: 15px;
	text-shadow: 0 1px 2px #222;
	color: #FFF;
	font-weight: bold;
	line-height: 24px;
	white-space: nowrap;
}

.fancybox-title-outside-wrap {
	position: relative;
	margin-top: 10px;
	color: #fff;
}

.fancybox-title-inside-wrap {
	padding-top: 10px;
}

.fancybox-title-over-wrap {
	position: absolute;
	bottom: 0;
	left: 0;
	color: #fff;
	padding: 10px;
	background: #000;
	background: rgba(0, 0, 0, .8);
}

/%%%Retina graphics!%%%/
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
	   only screen and (min--moz-device-pixel-ratio: 1.5),
	   only screen and (min-device-pixel-ratio: 1.5){

	#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
		background-image: url("data:image/png;base64,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");
		background-size: 44px 152px; /%%%The size of the normal image, half the size of the hi-res image%%%/
	}

	#fancybox-loading div {
		background-image: url("data:image/gif;base64,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");
		background-size: 24px 24px; /%%%The size of the normal image, half the size of the hi-res image%%%/
	}
}
}}}
!!!
***/
/***
|Description|Makes ctrl+tab work for tab changing (when focused on an editarea) in ~FireFox (instead of inserting a tab symbol)|
|Version|1.0|
|Short status|<<insertEditable container:"@stateComment" size:max cell>>|
|Author|Yakov Litvin|
keep overwriting in mind! (hope this will move to the core soon)
***/
//{{{
Story.prototype.onTiddlerKeyPress = function(ev)
{
	var e = ev || window.event;
	clearMessage();
	var consume = false;
	var title = this.getAttribute("tiddler");
	var target = resolveTarget(e);
	switch(e.keyCode) {
	case 9: // Tab
		var ed = story.getTiddlerField(title,"text");
		if(target.tagName.toLowerCase() == "input" && ed.value == config.views.editor.defaultText.format([title])) {
			// moving from input field and editor still contains default text, so select it
			ed.focus();
			ed.select();
			consume = true;
		}
		if(config.options.chkInsertTabs && !e.ctrlKey && target.tagName.toLowerCase() == "textarea") {
			replaceSelection(target,String.fromCharCode(9));
			consume = true;
		}
		if(config.isOpera)
			target.onblur = function() {
				this.focus();
				this.onblur = null;
			};
		break;
	case 13: // Ctrl-Enter
	case 10: // Ctrl-Enter on IE PC
	case 77: // Ctrl-Enter is "M" on some platforms
		if(e.ctrlKey) {
			blurElement(this);
			config.macros.toolbar.invokeCommand(this,"defaultCommand",e);
			consume = true;
		}
		break;
	case 27: // Escape
		blurElement(this);
		config.macros.toolbar.invokeCommand(this,"cancelCommand",e);
		consume = true;
		break;
	}
	e.cancelBubble = consume;
	if(consume) {
		if(e.stopPropagation) e.stopPropagation(); // Stop Propagation
		e.returnValue = true; // Cancel The Event in IE
		if(e.preventDefault ) e.preventDefault(); // Cancel The Event in Moz
	}
	return !consume;
};
//}}}
/***
|Version|1.0|
{{DDnc{should be based elsewhere}}}
***/
//{{{
jQuery(window).on("scroll",function(){
	
	var menuElement = document.getElementById("mainMenu");
	if(!menuElement) return;
	var header = document.getElementsByClassName("header")[0],
	    headerBottom = header.offsetTop + header.offsetHeight - findScrollY(),
	    position = findScrollY() + Math.max(headerBottom,0)

	menuElement.style.top = position+"px";
});
//}}}
/***
|Description	|adds toolbar buttons that allow to "fold" tiddlers|
|Version	|1.0.5|
|Author		|Yakov Litvin|
|Forked from	|[[CollapseTiddlersPlugin|http://www.TiddlyTools.com/#CollapseTiddlersPlugin]] by Eric Shulman and previously Bradley Meck|
|Overwrites	|{{{Story.prototype.permaView}}}|
|~CoreVersion?	|{{DDn{??, >=2.1}}}|
***/
//{{{
config.shadowTiddlers.CollapsedTemplate =
	"<!--{{{-->\
	<div class='toolbar' macro='toolbar [[CollapsedToolbarCommands]]'></div>\
	<div class='title' macro='view title'></div>\
	<!--}}}-->";
config.shadowTiddlers.CollapsedToolbarCommands =
	"closeTiddler closeOthers expandTiddler collapseOthers +editTiddler "+
	"jump > fields permalink references deleteTiddler";

// hijack config.macros.toolbar.handler to add collapseTiddler and collapseOthers
config.options.chkAddFoldingButtons = (config.options.chkAddFoldingButtons === undefined) ? true : config.options.chkAddFoldingButtons;
config.foldTiddlers_orig_toolbarHandler = config.macros.toolbar.handler;
if(config.options.chkAddFoldingButtons)
	config.macros.toolbar.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	// warning: paramString is not changed as /currently/ it's not used by config.macros.toolbar.handler

		var i, doAdd = true,
		    mainCommandRegExp = /closeOthers/,
		    foldCommandRegExp  = /collapseTiddler/,
		    unfoldCommandRegExp = /expandTiddler/;

		// don't add in the folded condition (if expandTiddler is present)
		// or if collapseTiddler is already present (manually added to toolbar)
		for(i = 0; i < params.length; i++)
			if(unfoldCommandRegExp.exec(params[i]) ||
			   foldCommandRegExp.exec(params[i])) {
				doAdd = false;
				break;
			}
		if(!doAdd)
			return config.foldTiddlers_orig_toolbarHandler.apply(this,arguments);
		
		for(i = 0; i < params.length; i++)
			if(mainCommandRegExp.exec(params[i])) { // locate the "edit" command
				params.splice(i+1,0,"collapseTiddler","collapseOthers"); // add after "edit"
				break;
			}
		config.foldTiddlers_orig_toolbarHandler.apply(this,arguments);
	};
//}}}
//{{{
config.commands.collapseTiddler = {

	text: "fold",
	tooltip: "Collapse this tiddler",
	collapsedTemplate: "CollapsedTemplate",
	webCollapsedTemplate: "WebCollapsedTemplate",
	handler: function(event,src,title) {

		var e = story.findContainingTiddler(src); if (!e) return false;
		// don't fold tiddlers that are being edited!
		if(story.isDirty(e.getAttribute("tiddler"))) return false;
		var t = config.commands.collapseTiddler.getCollapsedTemplate();
		config.commands.collapseTiddler.saveTemplate(e);
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","true");
		return false;
	},
	getCollapsedTemplate: function() {

		return (readOnly && store.tiddlerExists(this.webCollapsedTemplate)) ?
			this.webCollapsedTemplate :
			this.collapsedTemplate
	},
	saveTemplate: function(e) {

		if (e.getAttribute("savedTemplate") == undefined)
			e.setAttribute("savedTemplate", e.getAttribute("template"));
	},
	// fold/unfold tiddler with suspend/resume of single/top/bottom-of-page mode
	display: function(title,t) {

		var opt = config.options;
		var saveSPM = opt.chkSinglePageMode;   opt.chkSinglePageMode = false;
		var saveTPM = opt.chkTopOfPageMode;    opt.chkTopOfPageMode = false;
		var saveBPM = opt.chkBottomOfPageMode; opt.chkBottomOfPageMode = false;
		story.displayTiddler(null,title,t);
		opt.chkBottomOfPageMode = saveBPM;
		opt.chkTopOfPageMode = saveTPM;
		opt.chkSinglePageMode = saveSPM;
	}
}

config.commands.expandTiddler = {

	text: "unfold",
	tooltip: "Expand this tiddler",
	handler: function(event,src,title)
	{
		var e = story.findContainingTiddler(src); if (!e) return false;
		var t = e.getAttribute("savedTemplate");
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","false");
		return false;
	}
}

config.macros.collapseAll = {

	text: "collapse all",
	tooltip: "Collapse all tiddlers",
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		createTiddlyButton(place,this.text,this.tooltip,function(){
			story.forEachTiddler(function(title,tiddler)
			{
				if(story.isDirty(title)) return;
				var t = config.commands.collapseTiddler.getCollapsedTemplate();

				config.commands.collapseTiddler.saveTemplate(tiddler);
				config.commands.collapseTiddler.display(title,t);
				tiddler.folded = true;
			});
			return false;
		})
	}
}

config.macros.expandAll = {

	text: "expand all",
	tooltip: "Expand all tiddlers",
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		createTiddlyButton(place,this.text,this.tooltip,function(){
			story.forEachTiddler(function(title,tiddler){
				var t = config.commands.collapseTiddler.getCollapsedTemplate();
				if(tiddler.getAttribute("template")!=t) return; // re-display only if collapsed
				var t = tiddler.getAttribute("savedTemplate");
				config.commands.collapseTiddler.display(title,t);
				tiddler.folded = false;
			});
			return false;
		})
	}
}

config.commands.collapseOthers = {

	text: "focus",
	tooltip: "Expand this tiddler and collapse all others",
	handler: function(event,src,title) {
		var e = story.findContainingTiddler(src); if (!e) return false;
		story.forEachTiddler(function(title,tiddler) {
			if(story.isDirty(title)) return;
			var t = config.commands.collapseTiddler.getCollapsedTemplate();
			if (e == tiddler) t = e.getAttribute("savedTemplate");
			config.commands.collapseTiddler.saveTemplate(tiddler);
			config.commands.collapseTiddler.display(title,t);
			tiddler.folded = (e != tiddler);
		})
		return false;
	}
}

// {{{<<foldFirst>>}}} macro forces tiddler to be folded when *initially* displayed.
// Subsequent re-render does NOT re-fold tiddler, but closing/re-opening tiddler DOES cause it to fold first again.
config.macros.foldFirst = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {

		var e = story.findContainingTiddler(place);
		if (e.getAttribute("foldedFirst") == "true") return; // already been folded once
		var title = e.getAttribute("tiddler")
		var t = config.commands.collapseTiddler.getCollapsedTemplate();
		config.commands.collapseTiddler.saveTemplate(e);
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","true");
		e.setAttribute("foldedFirst","true"); // only when tiddler is first rendered
		return false;
	}
}
//}}}
//{{{
// [showFolded[n]] adds .openFolded = true to the last n tiddlers among results
config.filters.showFolded = function(results,match) {
	
	var number = parseInt(match[3]); // if NaN, the loop below just is not executed

	for(var i = 0; (i < number) && (results.length-1-i >= 0); i++)
		results[results.length-1-i].openFolded = true;
	
	return results;
}
// hijack chooseTemplateForTiddler to open tiddlers with .openFolded folded
config.foldTiddlers_orig_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler;
Story.prototype.chooseTemplateForTiddler = function(title,template) {

	var t = store.fetchTiddler(title);
	if(t && t.openFolded)
	{
		t.openFolded = false
		return "CollapsedTemplate";
	}
	
	return config.foldTiddlers_orig_chooseTemplateForTiddler.apply(this,arguments);
}
//# optionally change fold/unfold ~commands so that they change openFolded (the state is remembered during the session)

Story.prototype.isOpenedFolded = function(title) {
	
	var tiddlerElem = story.getTiddler(title);
	if(!tiddlerElem)
		return false;
	return tiddlerElem.getAttribute("template") == "CollapsedTemplate";
}
//# overwrite permaview to save which tiddlers are folded
//  use "filter" paramifier
Story.prototype.permaView = function()
{
	var links = [];
	this.forEachTiddler(function(title,element) {
		links.push(String.encodeTiddlyLink(title) +
			   (story.isOpenedFolded(title) ? " [showFolded[1]]" : ""));
	});
	var t = links.join(" ");
	t = t.replace(/\\/gm,"\\\\").replace(/"/gm,'\\"');
	if(t == "")
		t = "#";
	else
		t = encodeURIComponent('filter:"'+t+'"');
	if(window.location.hash != t)
		window.location.hash = t;
};

// unescape \" and \\ back..
var _unescape = function(value) {
	
	if(typeof value == "string")
		return value.replace(/\\"/gm,'"').replace(/\\\\/,'\\');
	return value;
};
// ..by hijacking invokeParamifier (certain paramifiers may be hijacked instead - probably enough to hijack only the "filter" one)
config.extensions.ftp_orig_invokeParamifier = invokeParamifier;
invokeParamifier = function(params,handler) {
	
	if(!params)
		return config.extensions.ftp_orig_invokeParamifier.apply(this,arguments);
	var paramifiers = params[0], name, i;
	for(name in paramifiers)
		for(i = 0; i < paramifiers[name].length; i++)
			paramifiers[name][i] = _unescape(paramifiers[name][i]);
	for(i = 1; i < params.length; i++)
		params[i].value = _unescape(params[i].value);

	return config.extensions.ftp_orig_invokeParamifier.apply(this,arguments);
};
//}}}
/***
|''Name''|ForEachTiddlerPlugin|
|''Version''|1.3.1|
|''Forked from''|[[abego.ForEachTiddlerPlugin|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin]], by Udo Borkowski|
|''Author''|Yakov Litvin|
|''CoreVersion''|2.6.2|
|~|Although 2.6.2 is theoretically minimal TW version required for the correct operation, tests showed that the plugin works in 2.6.0, too.|
***/
//{{{
(function(){

// Only install once
if (version.extensions.ForEachTiddlerPlugin) {
	alert("Warning: more than one copy of ForEachTiddlerPlugin is set to be launched");
	return;
} else
	version.extensions.ForEachTiddlerPlugin = {
		source: "[repository url here]",
		licence: "[licence url here]",
		copyright: "Copyright (c) Yakov Litvin, 2012-2015 [url of the meta page]"
	};

//============================================================================
// forEachTiddler Macro
//============================================================================

// ---------------------------------------------------------------------------
// Configurations and constants
// ---------------------------------------------------------------------------

config.macros.forEachTiddler =
{
	actions: {
		addToList: {},
		write: {}
	}
};

// ---------------------------------------------------------------------------
//  The forEachTiddler Macro Handler
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	// --- Pre-parsing for up-to-date params ----------------

	var preParsedParams = this.getUpToDateParams(paramString);
	// for backward compability, "params" are used as well

	// --- Parsing ------------------------------------------

	var parsedParams = this.parseParams(preParsedParams,params);
	if (parsedParams.errorText) {
		this.handleError(place, parsedParams.errorText);
		return;
	}//else
		parsedParams.place = place;
		parsedParams.inTiddler = tiddler ? tiddler : getContainingTiddler(place);

	// --- "Static" processing ------------------------------

	// Choose the action
	var actionName = parsedParams.actionName;
	var action = this.actions[actionName]; // no this is always a "known" action

	// Create the element
	var element = document.createElement(action.element);
	jQuery(element).attr({ refresh: "macro", macroName: macroName }).data(parsedParams);
	place.appendChild(element);

	// --- "Dynamic" processing -----------------------------

	this.refresh(element);
};

config.macros.forEachTiddler.refresh = function(element)
{
	var parsedParams = jQuery(element).data(),
	    action = this.actions[parsedParams.actionName];

	jQuery(element).empty();
	try {
		var tiddlersAndContext = this.getTiddlersAndContext(parsedParams);

		// Perform the action
		action.handler(element, tiddlersAndContext.tiddlers,
				parsedParams.actionParameter, tiddlersAndContext.context);
	} catch (e) {
		this.handleError(place, e);
	}
};

config.macros.forEachTiddler.oldFashionParams = ["in", "filter", "where", "sortBy",
	"script", "write", "begin", "end", "none", "toFile", "withLineSeparator"
//# add to docs: new actions are to be added here or used in name:param notation only
];

config.macros.forEachTiddler.getUpToDateParams = function(paramString)
// turns stuff like "... where 'tiddler.title.length < 20' ..."
//               to "... where:'tiddler.title.length < 20' ..." and then applies parseParams,
// which allows to use params in an arbitrary order and other goodies of parsed params
{
	var paramPairRegExp = new RegExp("("+this.oldFashionParams.join("|")+")\\s+"+
			"("+ // adapted from String.prototype.parseParams
			'(?:"(?:(?:\\\\")|[^"])+")|'+		// double-quoted param
			"(?:'(?:(?:\\\\')|[^'])+')|"+		// quoted param
			"(?:\\[\\[(?:\\s|\\S)*?\\]\\])|"+	// [[...]]-wrapped
			"(?:\\{\\{(?:\\s|\\S)*?\\}\\})|"+	// {{...}}-wrapped
			"(?:[^\"':\\s][^\\s:]*)|"+		// non-wrapped
			"(?:\"\")|(?:'')"+			// empty '' or ""
			")","g");
	paramString =
		paramString.replace(paramPairRegExp,function($0,$1,$2){ return $1+":"+$2; });

	return paramString.parseParams("filter",null,true,false,true);
	// the first unnamed param is now considered as the 'filter' param
};

// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @param parameter  holds the parameter of the macro as separate properties.
//				  The following properties are supported:
//
//						place
//						filter
//						whereClause
//						sortClause
//						sortAscending
//						actionName
//						actionParameter
//						scriptText
//						tiddlyWikiPath
//
//					All properties are optional.
//					For most actions the place property must be defined.
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter)
{
	var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.filter, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);

	var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
	context["tiddlyWiki"] = tiddlyWiki;
	
	// Get the tiddlers, as defined by the filter and the whereClause
	var tiddlers = this.findTiddlers(parameter.filter, parameter.whereClause, context, tiddlyWiki);
	context["tiddlers"] = tiddlers;

	// Sort the tiddlers, when sorting is required.
	if (parameter.sortClause)
		this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);

	return {tiddlers: tiddlers, context: context};
};

// ---------------------------------------------------------------------------
//  The actions 
// ---------------------------------------------------------------------------

// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.element = "ul";
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context)
{
	for (var i = 0; i < tiddlers.length; i++)
	{
		var tiddler = tiddlers[i];
		var listItem = document.createElement("li");
		place.appendChild(listItem);
		createTiddlyLink(listItem, tiddler.title, true);
	}
};

// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.element = "span";
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context)
{
	var params = parameter[0].nonParsedParams;
	if(!parameter[0]["write"])
		return this.handleError(place, "Missing expression behind 'write'.");
	var textExpression = config.macros.forEachTiddler.paramEncode(getParam(parameter,["write"]));

	var getParamExpression = function(name)
	{
		if(params.contains(name) && !parameter[0][name])
			throw "Missing text behind '%0'".format([name]);
		return config.macros.forEachTiddler.paramEncode(getParam(parameter,name));
	};
	var beginExpression = getParamExpression("begin");
	var   endExpression = getParamExpression("end");
	var  noneExpression = getParamExpression("none");

	var lineSeparator = undefined;
	if(params.contains("toFile") && !parameter[0]["toFile"])
		return this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
	var filename = getParam(parameter,"toFile");
	filename = config.macros.forEachTiddler.paramEncode(filename);
	if(filename) {
		filename = config.macros.forEachTiddler.getLocalPath(filename);

		if(params.contains("withLineSeparator")&& !parameter[0]["withLineSeparator"])
			return this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.")
		lineSeparator = getParamExpression("withLineSeparator");
	}

	// Perform the action.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context),
	    count = tiddlers.length,
	    text = "";
	if (count > 0 && beginExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);

	for (var i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		text += func(tiddler, context, count, i);
	}

	if (count > 0 && endExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);

	if (count == 0 && noneExpression)
	{
		var beginAddition = beginExpression ? "("+beginExpression+")" : "",
		      endAddition =   endExpression ? "("+  endExpression+")" : "",
		     bothAddition = "("+beginAddition
				+((beginAddition && endAddition) ? "+" : "")+endAddition+")";
		noneExpression = noneExpression
				.replace(/(?=\W|^)begin(?=\W|$)/,beginAddition)
				.replace(/(?=\W|^)end(?=\W|$)/,    endAddition)
				.replace(/(?=\W|^)same(?=\W|$)/,  bothAddition);
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);
	}

	if (filename) {
		if (lineSeparator !== undefined) {
			lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
			text = text.replace(/\n/mg,lineSeparator);
		}
		saveFile(filename, convertUnicodeToUTF8(text));
	} else
		wikify(text, place, null/* highlightRegExp */, context.inTiddler);
};


// ---------------------------------------------------------------------------
//  Helpers
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.parseParams = function(preParsedParams,params)
{
	if(params.contains("in") && !preParsedParams[0]["in"])
		return { errorText: "TiddlyWiki path expected behind 'in'." };
	var TWpath = getParam(preParsedParams,"in");

	if(params.contains("filter") && !preParsedParams[0]["filter"])
		return { errorText: "No filter specified." };

	if(params.contains("where") && !preParsedParams[0]["where"])
		return { errorText: "whereClause missing behind 'where'." };
	var where = getParam(preParsedParams,"where");

	var ascending = true;
	if(params.contains("sortBy") && !preParsedParams[0]["sortBy"])
		return { errorText: "sortClause missing behind 'sortBy'." };
	var sortClause = getParam(preParsedParams,"sortBy");
	if(preParsedParams[0]["sortBy"] && preParsedParams[0]["sortBy"].length > 1)
		ascending = !(preParsedParams[0]["sortBy"][1] == "descending");

	if(params.contains("script") && !preParsedParams[0]["script"])
		return { errorText: "scriptText is not specified." };
	var scriptText = getParam(preParsedParams,"script");

	var actionName = "addToList";
	for(var knownActionName in this.actions)
		if(preParsedParams[0][knownActionName]) {
			actionName = knownActionName;
			break;
		}
	// no error handling if there's an unknown action
	// because now the order is not important and actionName can have another position
	preParsedParams[0].nonParsedParams = params; // for parsing inside actions

	return {
		tiddlyWikiPath:	this.paramEncode(TWpath),
		filter:		getParam(preParsedParams,"filter"),
		whereClause:	this.paramEncode(where) || true,
		sortClause:	this.paramEncode(sortClause),
		sortAscending:	ascending,
		scriptText:	this.paramEncode(scriptText),
		actionName:	actionName,
		actionParameter:preParsedParams // not much need to cut out other params
	}
};

var getContainingTiddler = function(e)
{
	while(e && !hasClass(e,"tiddler"))
		e = e.parentNode;
	var title = e ? e.getAttribute("tiddler") : null; 
	return title ? store.getTiddler(title) : null;
};


// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, filterParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
	return {
		place		: placeParam,
		filter		: filterParam,
		whereClause	: whereClauseParam,
		sortClause	: sortClauseParam,
		sortAscending	: sortAscendingParam,
		script		: scriptText,
		actionName	: actionNameParam,
		actionParameter	: actionParameterParam,
		tiddlyWikiPath	: tiddlyWikiPathParam,
		inTiddler	: inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
		viewerTiddler	: getContainingTiddler(placeParam) //the tiddler showing the forEachTiddler result
	};
};


// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix)
{
	if (!idPrefix)
		idPrefix = "store";

	var lenPrefix = idPrefix.length;
	
	// Read the content of the given file
	var content = loadFile(this.getLocalPath(path));
	if(content === null)
		throw "TiddlyWiki '"+path+"' not found.";
	
	var tiddlyWiki = new TiddlyWiki();

	if (!tiddlyWiki.importTiddlyWiki(content))
		throw "File '"+path+"' is not a TiddlyWiki.";
	tiddlyWiki.dirty = false;

	return tiddlyWiki;
};


// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
// 
//	 (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
	var script = context["script"];
//	var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
	var functionText = "var theFunction = function(tiddler, context, count, index) { "+(script ? script+";" : "")+"return "+javaScriptExpression+"}";
//	var fullText = (script ? script+";" : "")+functionText+";theFunction;";
	var fullText = functionText+";theFunction;";
	return eval(fullText);
};


// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(filter, whereClause, context, tiddlyWiki) {
	var result = [];
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
	if(filter) {
		var tids = tiddlyWiki.filterTiddlers(filter);
		for(var i = 0; i < tids.length; i++)
			if(func(tids[i], context, undefined, undefined))
				result.push(tids[i]);
	} else
		tiddlyWiki.forEachTiddler(function(title,tiddler) {
			if(func(tiddler, context, undefined, undefined))
				result.push(tiddler);
		});
	return result;
};


// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB)
{
	return ((tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
			? 0
			: ((tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? -1
			   : +1))
};

// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB)
{
	return ((tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
			? 0
			: ((tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? +1
			   : -1))
};

// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
	// To avoid evaluating the sortClause whenever two items are compared 
	// we pre-calculate the sortValue for every item in the array and store it in a 
	// temporary property ("forEachTiddlerSortValue") of the tiddlers.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
	var count = tiddlers.length;
	var i;
	for (i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
	}

	// Do the sorting
	tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);

	// Delete the temporary property that holds the sortValue.
	for (i = 0; i < tiddlers.length; i++)
		delete tiddlers[i].forEachTiddlerSortValue;
};


// Internal.
//
// Creates an element that holds an error message
// 
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
	var message = (exception.description) ? exception.description : exception.toString();
	return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};

// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception)
{
	if(place)
		this.createErrorElement(place, exception);
	else
		throw exception;
};


// Internal.
//
// Encodes the given string.
//
// Replaces 
//	 "$))" to ">>"
//	 "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s)
{
	if(!s) return s;
	var reGTGT = new RegExp("\\$\\)\\)","mg");
	var reGT = new RegExp("\\$\\)","mg");
	return s.replace(reGTGT, ">>").replace(reGT, ">");
};
//# document the .paramEncode transformation of the params; or get rid of it?

// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Handles relative links, too.
//
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
// code adapted from SharedTiddlersPlugin to handle relative paths

	var originalAbsolutePath = originalPath;
	if(originalAbsolutePath.search(/^((http(s)?)|(file)):/) != 0) {
	// no protocol prefix..

		if (originalAbsolutePath.search(/^(.\:\\)|(\\\\)|(\/)/) != 0){// is relative?
		// as Unix filesystem root is "/", urls starting with it are not considered as relative

			var currentUrl  = document.location.toString();
			var currentPath = (currentUrl.lastIndexOf("/") > -1) ?
				currentUrl.substr(0, currentUrl.lastIndexOf("/") + 1) :
				currentUrl + "/";
			originalAbsolutePath = currentPath + originalAbsolutePath;
		} else
		// an "absolute" path to a local file. Prefix it with file://

			originalAbsolutePath = "file://" + originalAbsolutePath;

		// replace every \ by a /, to cover Windows style pathes
		originalAbsolutePath = originalAbsolutePath.replace(/\\/mg,"/");
	}
	return getLocalPath(originalAbsolutePath);
};


// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
	".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
	"forEachTiddler");

// ---------------------------------------------------------------------------
// fet alias for the the forEachTiddler Macro
// ---------------------------------------------------------------------------

config.macros.fet = config.macros.forEachTiddler;

//============================================================================
// utilities for String and Tiddler objects useful in fet macros
//============================================================================

// Returns true if the string starts with the given prefix, false otherwise.
//
String.prototype.startsWith = function(prefix) {
	var n =  prefix.length;
	return (this.length >= n) && (this.slice(0, n) == prefix);
};

// Returns true if the string ends with the given suffix, false otherwise.
//
String.prototype.endsWith = function(suffix) {
	var n = suffix.length;
	return (this.length >= n) && (this.right(n) == suffix);
};

// Returns true when the string contains the given substring, false otherwise.
//
String.prototype.contains = function(substring) {
	return this.indexOf(substring) >= 0;
};
})();

// Returns the slice value if it is present or defaultText otherwise
//
Tiddler.prototype.getSlice = function(sliceName,defaultText)
{
	var re = TiddlyWiki.prototype.slicesRE;
	re.lastIndex = 0;
	var m = re.exec(this.text);
	while(m) {
		if(m[2]) {
			if(m[2] == sliceName)
				return m[3];
		} else {
			if(m[5] == sliceName)
				return m[6];
		}
		m = re.exec(this.text);
	}
	return defaultText;
};

// Returns the section value if it is present or defaultText otherwise
//
Tiddler.prototype.getSection = function(sectionName,defaultText)
{
	var beginSectionRegExp = new RegExp("(^!{1,6}[ \t]*" + sectionName.escapeRegExp() + "[ \t]*\n)","mg"),
	    sectionTerminatorRegExp = /^!/mg;

	var match = beginSectionRegExp.exec(this.text), sectionText;
	if(match) {
		sectionText = this.text.substr(match.index+match[1].length);
		match = sectionTerminatorRegExp.exec(sectionText);
		if(match)
			sectionText = sectionText.substr(0,match.index-1); // don't include final \n
		return sectionText;
	}
	return defaultText;
};

var transText = function(tiddlerOrGetTiddlerTextArg, moreArguments)
{
	var title = (tiddlerOrGetTiddlerTextArg instanceof Tiddler) ? tiddlerOrGetTiddlerTextArg.title : tiddlerOrGetTiddlerTextArg;
	return "<<tiddler [[" + title + "]] "+ (moreArguments||"") +">>"
};
//}}}
/***
|''Name''|FromPlaceToPlacePlugin|
|''Description''|allows to substitute current tiddlers or page instead of opening tiddlers/pages in addition|
|''Documentation''|see below|
|''Type''|plugin|
|''Version''|1.2.0|
|''CoreVersion''|2.5.0|
|''Source''|http://yakovl.bplaced.net/TW/FPTP.html#FromPlaceToPlacePlugin|
|''Author''|Yakov Litvin|
|''Contact''|See the [[main plugin discussion thread|https://groups.google.com/forum/#!topic/tiddlywiki/bICRWy8qo8g]] and [[contacts|http://customize.tiddlyspace.com/#%5B%5BYakov%20Litvin%5D%5D]]|
|''Copyright''|Yakov Litvin, 2013|
|''Licence''|[[BSD-like open source license|http://yakovl.bplaced.net/TW/FPTP.html#%5B%5BYakov%20Litvin%20Public%20Licence%5D%5D]]|
!!!Introduction
In ~TiddlyWiki, links work "comulatively": when you click an internal link, you get +1 tiddler opened, external links open pages without closing ~TiddlyWiki (hence +1 browser tab). At times, this causes unnecessary "flooding" with opened things (tiddlers/pages). To solve this, FromPlaceToPlacePlugin was created.

It works in a simple way: it keeps the common functionality of the "click a link" action, but "hold meta key + click a link" causes "close and open" action:
* for internal links, this means "close the tiddler in which the link is placed and open the target tiddler"
* for external links, this means "open the page in the same browser tab"
!!!Installation & usage
Aside the usual import/copy-and-add-{{{systemConfig}}}-tag action, you need to adjust the meta keys for internal and external links (and reload afterwards). To do this, change the "Config" section of this tiddler ({{{txtFromTiddlerToTiddlerKey}}} for internal and {{{txtFromPageToPageKey}}} for external links), if necessary. Note that:
* {{{shift}}} doesn't work well for external links in Opera: on shift+click it opens the link in a new tab, so this will result in two equal tabs opened (with Opera, I recommend {{{alt}}})
* {{{alt}}} doesn't work well with IE, so you probably would prefer {{{shift}}}
* each {{{alt}}}, {{{ctrl}}} and {{{shift}}} work (with the limitations above); any other value of an option deactivates corresponding feature
Once the meta keys are set and TW is reloaded, try to click links..
!!!Demo
* click this [[internal link|Introduction to FromPlaceToPlacePlugin]] while pressing {{{shift}}} (or whatever meta key you've set)
* click this [[external link|http://yakovl.bplaced.net/TW/STP/STP.html]] while holding {{{alt}}} key
!!!Additional notes
* this works even with implicit links (like those in the "references" popup)
* "external links" are links with the {{{externalLink}}} class, so links created with inline-html won't work unless the class is added
!!!Config
***/
//{{{
config.extensions.txtFromPageToPageKey = 'alt';         // each 'alt', 'ctrl' and 'shift' work
config.extensions.txtFromTiddlerToTiddlerKey = 'shift'; // each 'alt', 'ctrl' and 'shift' work
//}}}
/***
!!!Code
***/
//{{{
(function(){
if(version.extensions.FromPlaceToPlacePlugin)
	return;
version.extensions.FromPlaceToPlacePlugin = { major: 1, minor: 2, revision: 0, date: new Date(2013,10,24)};

var firedWhenKeyWasPressed = function(event,key) {

	return (event.shiftKey && key == 'shift') ||
	       (event.ctrlKey && key == 'ctrl') ||
	       (event.altKey && key == 'alt');
}

//------------------------------------------------------------------------------------------------------------
// From tiddler to tiddler

// keep as a global variable for a possibility of introspection
orig_onClickTiddlerLink = onClickTiddlerLink;

// hijack
onClickTiddlerLink = function(ev) {

	var result,
	    sourceTid = story.findContainingTiddler(this),
	    event = ev || window.event,
	    key = config.extensions.txtFromTiddlerToTiddlerKey,
	    close = (firedWhenKeyWasPressed(event,key) && sourceTid) ? true : false;

	// to "correct" page and zoomer position,
	// hide the "source" tiddler before opening the "target" and closing the "source"
	if(close)
		sourceTid.style.display = "none";
	result = orig_onClickTiddlerLink(event);
	if(close) {
		var tName = sourceTid.getAttribute("tiddler");
		story.closeTiddler(tName);
	}
	return result;
}

//------------------------------------------------------------------------------------------------------------
// From page to page
jQuery("body").delegate("a.externalLink", "click", function(ev) {

	var event = ev || window.event,
	    key = config.extensions.txtFromPageToPageKey,
	    close = firedWhenKeyWasPressed(event,key),
	    target = jQuery(this).attr("href");

	if(close) {
		window.location.assign(target);
		return false;
	}
});

})();
//}}}
/***
|''Name:''|HandsontablePlugin|
|''Description:''|Brings Handsontable spreadsheets into ~TiddlyWiki classic|
|''Author:''|Yakov Litvin|
|''Initial prototype:''|[[by Vincent Yeh|http://twve.tiddlyspot.com/#HandsontablePlugin]]|
|''Source:''|http://yakovl.bplaced.net/TW/Spreadsheets.html|
|''Type:''|plugin|
|''Version:''|0.3.2|
|''Status:''|Stable, useful enough to use in production, but needs some improvements|
|''License:''|MIT|
|''~CoreVersion:''|2.5.0|
{{DDnc{not documented yet: using with a set of tiddlers (filter, containers params, ..)}}}

!! Demo
Basically if you put this macro to your TW:
{{{
<<handsontable [[##some section name]]>>
}}}
you will get this little spreadsheet (try navigating with arrows and typing some stuff):/%
!some section name
{"data":[
	[""]
],
"options":{}}
!%/<<handsontable [[##some section name]]>>
and after creating some columns and rows and writing some data you may have something like this:
<<handsontable [[##another section name]]>>/%
!another section name
{"data":[
	["","Charly","Bob","Tom"],
	["Charly","–","1:1","3:0"],
	["Bob","1:1","–","0:3"],
	["Tom","0:3","3:0","–"]
],
"options":{}}
!%/You may also populate a table by copy-pasting some content from other tables, including spreadsheets. Data is stored automatically (see below for details). For other examples, see [[Handsontable Demo]].

!! Installation and usage
# Install this plugin (copy-paste it and tag with {{{systemConfig}}} or import; reload TW).
# Add a {{{handsontable}}} macro somewhere with params you see fit and start editing.
* if you use the old approach from Vincent's v0.0.1, you can adapt your data to the new format (macro + section for data and options, see below) or just copy-paste your data. In current version backward compability code is present, but it is deprecated and will be removed at some point.

!!! Macro syntax
the simplest syntax is the following:
{{{
<<handsontable [[##section name]]>>
}}}
this way, data and handsontable options will be stored in a section {{{section name}}} in the same tiddler as the macro. If the section doesn't exist, it will be created hidden (see data format for details). You can also store data in another tiddler by using
{{{
<<handsontable [[tiddler name##section name]]>>
}}}
to store it in a section or
{{{
<<handsontable [[tiddler name]]>>
}}}
to store it just as text of the {{{tiddler name}}} tiddler.

For more advanced usage, one would need to set handsontable options (see [[docs|http://docs.handsontable.com/Core.html]]):
{{{
<<handsontable [[...]] options:'{
	rowHeaders: true,
	...
}'>>
}}}
Note that options have the following priority: default ones (lowest, see below), from macro params, stored (highest, see below).

!!!Default options
In the version 0.3.1, the following handsontable options are set by default:
|{{{colHeaders: true}}}|headers are useful for manual resizing of columns (as of 05.2017, [[resizing can't be done without them|https://github.com/handsontable/handsontable/issues/4244]])|
|{{{manualColumnResize: true}}}|enables manual resizing, ({{DDn{sizes are not saved yet}}})|
|{{{contextMenu: true}}}|enables context menu ({{DDn{results of toggling read-only and changing alignment are not saved yet}}})|
You may hard-code them in the {{{defaultOptions}}} property of {{{config.macros.handsontable}}}.

!!!wikifiedRenderer
To display cells' content wikified, you may use the {{{renderer}}} option with the pre-defined renderer {{{config.macros.handsontable.wikifiedRenderer}}} like this:
{{{
<<handsontable [[##section name]] options:'{
	renderer: this.wikifiedRenderer
}'
>>
}}}
It is also possible to use it only in certain columns using the {{{columns}}} option (2d and 5th columns in the following example):
{{{
	columns: [ {},{renderer: this.wikifiedRenderer},
    	{},{},{renderer: this.wikifiedRenderer}
	{},{},{}]
}}}
However, this method prevents creating new columns, so a preferrable approach would be to use a custom renderer:
{{{
	renderer: function (instance, td, row, col, prop, value, cellProperties)
	{
		if(col == 1 || col == 4) // first column has an index of 0
			config.macros.handsontable.wikifiedRenderer.apply(this,arguments);
		else
			Handsontable.renderers.TextRenderer.apply(this,arguments);
	}
}}}

!!!Data format
Normally, you don't need to know the data storage format. However, it may be useful if you want to adapt handsontables created with the 0.0.1 version to the new version (use macros) or repair/convert some data.

Data and options are stored as JSON in the section/tiddler chosen in the first macro param:
{{{
!section
{data:[
	...
],
options:[
	...
]}
}}}
if the section doesn't exist it is created hidden in the end of the tiddler text:
{{{
.../%
!section
...
!%/
}}}
and if the text ends with {{{|}}}, extra linebreak is added (not to hurt a table in TW syntax):
{{{
...|
/%
!section
...
!%/
}}}

!! Changelog
* 0.3.3 (2.07.2017, by Yakov Litvin) – fixed a major bug with refreshing when changing the set of tiddlers by an "external" mean
* 0.3.2 (14.06.2017, by Yakov Litvin) – added refreshing to the aggregated handsontable
* 0.3.1 (20.05.2017, by Yakov Litvin) – fixed setting dirty on displaying aggregated handsontable, fixed: allow to use ctrl+tab to switch browser tab from handsontable
* 0.3.0 (17.05.2017, by Yakov Litvin) – implemented rough prototype for editing granulated data (collected from a filtered set of tiddlers)
* 0.2.4 (15.05.2017, by Yakov Litvin) – fixed autoremoving empty columns/rows (prevented "jumping"/extra page scrolling, removing the only column/row)
* 0.2.3 (2.05.2017, by Yakov Litvin) – implemented autoinserting columns/rows when moving out of right/bottom boundaries when pressing right/down + autoremoving empty columns/rows when going back
* 0.2.2 (22.04.2017, by Yakov Litvin) – tested `wikifiedRenderer`, refactored options system, added `wikifiedRenderer` to the plugin
* 0.2.0 (06.04.2017, by Yakov Litvin) – added a macro that edits data and stores it in a tiddler/section, now ~InlineJavascriptPlugin is not necessary to use this
* 0.1.0 (02.03.2017, by Yakov Litvin) – local copies of handsontable (js and css) used (embedded into the plugin) instead of external ones loaded from web
* 0.0.1 (22.06.2015, by Vincent Yeh) – Born this day.
** Works __with or without a locally installed version__ of Handsontable.
*** If a local version is not installed, this plugin will load its on-line version (http://handsontable.com/dist/handsontable.full.min.js) and its stylesheet (http://handsontable.com/dist/handsontable.full.min.css).
** Updates wiki text upon content change using Handsontable.
** __Works with multiple tables__ in one tiddler if each table data is given a __unique variable name__.
** Tested only in normally loaded tiddlers.
!!Code
***/
// /%
/***
handsontable.min.js 0.31.0
downloaded from http://handsontable.com/dist/handsontable.full.min.js
which redirected to http://docs.handsontable.com/0.31.0/bower_components/handsontable/dist/handsontable.full.min.js
(The MIT License)

Copyright (c) 2012-2014 Marcin Warpechowski
Copyright (c) 2015 Handsoncode sp. z o.o. <hello@handsoncode.net>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
***/
//{{{
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Handsontable=e()}}(function(){var e;return function e(t,n,o){function r(a,l){if(!n[a]){if(!t[a]){var u="function"==typeof require&&require;if(!l&&u)return u(a,!0);if(i)return i(a,!0);if(s[a]&&"undefined"!=typeof window[s[a]])return window[s[a]];var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var d=n[a]={exports:{}};t[a][0].call(d.exports,function(e){var n=t[a][1][e];return r(n?n:e)},d,d.exports,e,t,n,o)}return n[a].exports}for(var i="function"==typeof require&&require,s=JSON.parse('{"zeroclipboard":"ZeroClipboard","moment":"moment","numbro":"numbro","pikaday":"Pikaday"}')||{},a=0;a<o.length;a++)r(o[a]);return r}({1:[function(e,t,n){},{}],2:[function(e,t,n){window.jQuery&&!function(e){e.fn.handsontable=function(e){var t,n,o,r,i,s=this.first(),a=s.data("handsontable");if("string"!=typeof e)return i=e||{},a?a.updateSettings(i):(a=new Handsontable.Core(s[0],i),s.data("handsontable",a),a.init()),s;if(o=[],arguments.length>1)for(t=1,n=arguments.length;t<n;t++)o.push(arguments[t]);if(a){if("undefined"==typeof a[e])throw new Error("Handsontable do not provide action: "+e);r=a[e].apply(a,o),"destroy"===e&&s.removeData()}return r}}(window.jQuery)},{}],3:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableBorder:{get:function(){return C}},__esModule:{value:!0}});var o,r,i,s,a,l,u=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}),c=u.getComputedStyle,d=u.getTrimmingContainer,h=u.innerWidth,f=u.innerHeight,p=u.offset,m=u.outerHeight,g=u.outerWidth,w=(r=e("helpers/dom/event"),r&&r.__esModule&&r||{default:r}).stopImmediatePropagation,v=(i=e("helpers/browser"),i&&i.__esModule&&i||{default:i}).isMobileBrowser,y=(s=e("eventManager"),s&&s.__esModule&&s||{default:s}).EventManager,b=(a=e("cell/coords"),a&&a.__esModule&&a||{default:a}).WalkontableCellCoords,C=((l=e("overlay/_base.js"),l&&l.__esModule&&l||{default:l}).WalkontableOverlay,function(e,t){t&&(this.eventManager=new y(e),this.instance=e,this.wot=e,this.settings=t,this.mouseDown=!1,this.main=null,this.top=null,this.left=null,this.bottom=null,this.right=null,this.topStyle=null,this.leftStyle=null,this.bottomStyle=null,this.rightStyle=null,this.cornerDefaultStyle={width:"5px",height:"5px",borderWidth:"2px",borderStyle:"solid",borderColor:"#FFF"},this.corner=null,this.cornerStyle=null,this.createBorders(t),this.registerListeners())});$traceurRuntime.createClass(C,{registerListeners:function(){var e=this;this.eventManager.addEventListener(document.body,"mousedown",function(){return e.onMouseDown()}),this.eventManager.addEventListener(document.body,"mouseup",function(){return e.onMouseUp()});for(var t=this,n=function(n,o){t.eventManager.addEventListener(t.main.childNodes[n],"mouseenter",function(t){return e.onMouseEnter(t,e.main.childNodes[n])})},o=0,r=this.main.childNodes.length;o<r;o++)n(o,r)},onMouseDown:function(){this.mouseDown=!0},onMouseUp:function(){this.mouseDown=!1},onMouseEnter:function(e,t){function n(e){return e.clientY<Math.floor(i.top)||(e.clientY>Math.ceil(i.top+i.height)||(e.clientX<Math.floor(i.left)||(e.clientX>Math.ceil(i.left+i.width)||void 0)))}function o(e){n(e)&&(r.eventManager.removeEventListener(document.body,"mousemove",o),t.style.display="block")}if(this.mouseDown&&this.wot.getSetting("hideBorderOnMouseDownOver")){e.preventDefault(),w(e);var r=this,i=t.getBoundingClientRect();t.style.display="none",this.eventManager.addEventListener(document.body,"mousemove",o)}},createBorders:function(e){this.main=document.createElement("div");var t=["top","left","bottom","right","corner"],n=this.main.style;n.position="absolute",n.top=0,n.left=0;for(var o=0;o<5;o++){var r=t[o],i=document.createElement("div");i.className="wtBorder "+(this.settings.className||""),this.settings[r]&&this.settings[r].hide&&(i.className+=" hidden"),n=i.style,n.backgroundColor=this.settings[r]&&this.settings[r].color?this.settings[r].color:e.border.color,n.height=this.settings[r]&&this.settings[r].width?this.settings[r].width+"px":e.border.width+"px",n.width=this.settings[r]&&this.settings[r].width?this.settings[r].width+"px":e.border.width+"px",this.main.appendChild(i)}this.top=this.main.childNodes[0],this.left=this.main.childNodes[1],this.bottom=this.main.childNodes[2],this.right=this.main.childNodes[3],this.topStyle=this.top.style,this.leftStyle=this.left.style,this.bottomStyle=this.bottom.style,this.rightStyle=this.right.style,this.corner=this.main.childNodes[4],this.corner.className+=" corner",this.cornerStyle=this.corner.style,this.cornerStyle.width=this.cornerDefaultStyle.width,this.cornerStyle.height=this.cornerDefaultStyle.height,this.cornerStyle.border=[this.cornerDefaultStyle.borderWidth,this.cornerDefaultStyle.borderStyle,this.cornerDefaultStyle.borderColor].join(" "),v()&&this.createMultipleSelectorHandles(),this.disappear(),this.wot.wtTable.bordersHolder||(this.wot.wtTable.bordersHolder=document.createElement("div"),this.wot.wtTable.bordersHolder.className="htBorders",this.wot.wtTable.spreader.appendChild(this.wot.wtTable.bordersHolder)),this.wot.wtTable.bordersHolder.insertBefore(this.main,this.wot.wtTable.bordersHolder.firstChild)},createMultipleSelectorHandles:function(){this.selectionHandles={topLeft:document.createElement("DIV"),topLeftHitArea:document.createElement("DIV"),bottomRight:document.createElement("DIV"),bottomRightHitArea:document.createElement("DIV")};var e=10,t=40;this.selectionHandles.topLeft.className="topLeftSelectionHandle",this.selectionHandles.topLeftHitArea.className="topLeftSelectionHandle-HitArea",this.selectionHandles.bottomRight.className="bottomRightSelectionHandle",this.selectionHandles.bottomRightHitArea.className="bottomRightSelectionHandle-HitArea",this.selectionHandles.styles={topLeft:this.selectionHandles.topLeft.style,topLeftHitArea:this.selectionHandles.topLeftHitArea.style,bottomRight:this.selectionHandles.bottomRight.style,bottomRightHitArea:this.selectionHandles.bottomRightHitArea.style};var n={position:"absolute",height:t+"px",width:t+"px","border-radius":parseInt(t/1.5,10)+"px"};for(var o in n)n.hasOwnProperty(o)&&(this.selectionHandles.styles.bottomRightHitArea[o]=n[o],this.selectionHandles.styles.topLeftHitArea[o]=n[o]);var r={position:"absolute",height:e+"px",width:e+"px","border-radius":parseInt(e/1.5,10)+"px",background:"#F5F5FF",border:"1px solid #4285c8"};for(var i in r)r.hasOwnProperty(i)&&(this.selectionHandles.styles.bottomRight[i]=r[i],this.selectionHandles.styles.topLeft[i]=r[i]);this.main.appendChild(this.selectionHandles.topLeft),this.main.appendChild(this.selectionHandles.bottomRight),this.main.appendChild(this.selectionHandles.topLeftHitArea),this.main.appendChild(this.selectionHandles.bottomRightHitArea)},isPartRange:function(e,t){return!(!this.wot.selections.area.cellRange||e==this.wot.selections.area.cellRange.to.row&&t==this.wot.selections.area.cellRange.to.col)},updateMultipleSelectionHandlesPosition:function(e,t,n,o,r,i){var s=parseInt(this.selectionHandles.styles.topLeft.width,10),a=parseInt(this.selectionHandles.styles.topLeftHitArea.width,10);this.selectionHandles.styles.topLeft.top=parseInt(n-s,10)+"px",this.selectionHandles.styles.topLeft.left=parseInt(o-s,10)+"px",this.selectionHandles.styles.topLeftHitArea.top=parseInt(n-a/4*3,10)+"px",this.selectionHandles.styles.topLeftHitArea.left=parseInt(o-a/4*3,10)+"px",this.selectionHandles.styles.bottomRight.top=parseInt(n+i,10)+"px",this.selectionHandles.styles.bottomRight.left=parseInt(o+r,10)+"px",this.selectionHandles.styles.bottomRightHitArea.top=parseInt(n+i-a/4,10)+"px",this.selectionHandles.styles.bottomRightHitArea.left=parseInt(o+r-a/4,10)+"px",this.settings.border.multipleSelectionHandlesVisible&&this.settings.border.multipleSelectionHandlesVisible()?(this.selectionHandles.styles.topLeft.display="block",this.selectionHandles.styles.topLeftHitArea.display="block",this.isPartRange(e,t)?(this.selectionHandles.styles.bottomRight.display="none",this.selectionHandles.styles.bottomRightHitArea.display="none"):(this.selectionHandles.styles.bottomRight.display="block",this.selectionHandles.styles.bottomRightHitArea.display="block")):(this.selectionHandles.styles.topLeft.display="none",this.selectionHandles.styles.bottomRight.display="none",this.selectionHandles.styles.topLeftHitArea.display="none",this.selectionHandles.styles.bottomRightHitArea.display="none"),e==this.wot.wtSettings.getSetting("fixedRowsTop")||t==this.wot.wtSettings.getSetting("fixedColumnsLeft")?(this.selectionHandles.styles.topLeft.zIndex="9999",this.selectionHandles.styles.topLeftHitArea.zIndex="9999"):(this.selectionHandles.styles.topLeft.zIndex="",this.selectionHandles.styles.topLeftHitArea.zIndex="")},appear:function(e){if(!this.disabled){var t,n,o,r,i,s,a,l,u,w,y,C,_,R,M,S,E,O,T;T=this.wot.wtTable.getRenderedRowsCount();for(var k=0;k<T;k++){var x=this.wot.wtTable.rowFilter.renderedToSource(k);if(x>=e[0]&&x<=e[2]){_=x;break}}for(var D=T-1;D>=0;D--){var H=this.wot.wtTable.rowFilter.renderedToSource(D);if(H>=e[0]&&H<=e[2]){M=H;break}}T=this.wot.wtTable.getRenderedColumnsCount();for(var A=0;A<T;A++){var P=this.wot.wtTable.columnFilter.renderedToSource(A);if(P>=e[1]&&P<=e[3]){R=P;break}}for(var N=T-1;N>=0;N--){var L=this.wot.wtTable.columnFilter.renderedToSource(N);if(L>=e[1]&&L<=e[3]){S=L;break}}if(void 0===_||void 0===R)return void this.disappear();t=_!==M||R!==S,n=this.wot.wtTable.getCell(new b(_,R)),o=t?this.wot.wtTable.getCell(new b(M,S)):n,r=p(n),i=t?p(o):r,s=p(this.wot.wtTable.TABLE),l=r.top,y=i.top+m(o)-l,w=r.left,C=i.left+g(o)-w,a=l-s.top-1,u=w-s.left-1;var I=c(n);parseInt(I.borderTopWidth,10)>0&&(a+=1,y=y>0?y-1:0),parseInt(I.borderLeftWidth,10)>0&&(u+=1,C=C>0?C-1:0),this.topStyle.top=a+"px",this.topStyle.left=u+"px",this.topStyle.width=C+"px",this.topStyle.display="block",this.leftStyle.top=a+"px",this.leftStyle.left=u+"px",this.leftStyle.height=y+"px",this.leftStyle.display="block";var W=Math.floor(this.settings.border.width/2);this.bottomStyle.top=a+y-W+"px",this.bottomStyle.left=u+"px",this.bottomStyle.width=C+"px",this.bottomStyle.display="block",this.rightStyle.top=a+"px",this.rightStyle.left=u+C-W+"px",this.rightStyle.height=y+1+"px",this.rightStyle.display="block",v()||!this.hasSetting(this.settings.border.cornerVisible)||this.isPartRange(M,S)?this.cornerStyle.display="none":(this.cornerStyle.top=a+y-4+"px",this.cornerStyle.left=u+C-4+"px",this.cornerStyle.borderRightWidth=this.cornerDefaultStyle.borderWidth,this.cornerStyle.width=this.cornerDefaultStyle.width,this.cornerStyle.display="none",E=d(this.wot.wtTable.TABLE),S===this.wot.getSetting("totalColumns")-1&&(O=o.offsetLeft+g(o)+parseInt(this.cornerDefaultStyle.width)/2>=h(E),O&&(this.cornerStyle.left=Math.floor(u+C-3-parseInt(this.cornerDefaultStyle.width)/2)+"px",this.cornerStyle.borderRightWidth=0)),M===this.wot.getSetting("totalRows")-1&&(O=o.offsetTop+m(o)+parseInt(this.cornerDefaultStyle.height)/2>=f(E),O&&(this.cornerStyle.top=Math.floor(a+y-3-parseInt(this.cornerDefaultStyle.height)/2)+"px",this.cornerStyle.borderBottomWidth=0)),this.cornerStyle.display="block"),v()&&this.updateMultipleSelectionHandlesPosition(_,R,a,u,C,y)}},disappear:function(){this.topStyle.display="none",this.leftStyle.display="none",this.bottomStyle.display="none",this.rightStyle.display="none",this.cornerStyle.display="none",v()&&(this.selectionHandles.styles.topLeft.display="none",this.selectionHandles.styles.bottomRight.display="none")},hasSetting:function(e){return"function"==typeof e?e():!!e}},{}),window.WalkontableBorder=C},{"cell/coords":6,eventManager:42,"helpers/browser":44,"helpers/dom/element":47,"helpers/dom/event":48,"overlay/_base.js":12}],4:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableViewportColumnsCalculator:{get:function(){return r}},__esModule:{value:!0}});var o=new WeakMap,r=function(e,t,n,r,i,s,a){var l=void 0!==arguments[7]?arguments[7]:function(e){return e};o.set(this,{viewportWidth:e,scrollOffset:t,totalColumns:n,columnWidthFn:r,overrideFn:i,onlyFullyVisible:s,stretchingColumnWidthFn:l}),this.count=0,this.startColumn=null,this.endColumn=null,this.startPosition=null,this.stretchAllRatio=0,this.stretchLastWidth=0,this.stretch=a,this.totalTargetWidth=0,this.needVerifyLastColumnWidth=!0,this.stretchAllColumnsWidth=[],this.calculate()},i=r;$traceurRuntime.createClass(r,{calculate:function(){for(var e,t=0,n=!0,r=[],i=o.get(this),s=i.onlyFullyVisible,a=i.overrideFn,l=i.scrollOffset,u=i.totalColumns,c=i.viewportWidth,d=0;d<u;d++){e=this._getColumnWidth(d),t<=l&&!s&&(this.startColumn=d);var h=l>0?c+1:c;if(t>=l&&t+e<=l+h&&(null==this.startColumn&&(this.startColumn=d),this.endColumn=d),r.push(t),t+=e,s||(this.endColumn=d),t>=l+c){n=!1;break}}if(this.endColumn===u-1&&n)for(this.startColumn=this.endColumn;this.startColumn>0;){var f=r[this.endColumn]+e-r[this.startColumn-1];if((f<=c||!s)&&this.startColumn--,f>c)break}null!==this.startColumn&&a&&a(this),this.startPosition=r[this.startColumn],void 0==this.startPosition&&(this.startPosition=null),null!==this.startColumn&&(this.count=this.endColumn-this.startColumn+1)},refreshStretching:function(e){if("none"!==this.stretch){this.totalTargetWidth=e;for(var t=o.get(this),n=t.totalColumns,r=0,i=0;i<n;i++){var s=this._getColumnWidth(i),a=t.stretchingColumnWidthFn(void 0,i);"number"==typeof a?e-=a:r+=s}var l=e-r;if("all"===this.stretch&&l>0)this.stretchAllRatio=e/r,this.stretchAllColumnsWidth=[],this.needVerifyLastColumnWidth=!0;else if("last"===this.stretch&&e!==1/0){var u=this._getColumnWidth(n-1),c=l+u;this.stretchLastWidth=c>=0?c:u}}},getStretchedColumnWidth:function(e,t){var n=null;return"all"===this.stretch&&0!==this.stretchAllRatio?n=this._getStretchedAllColumnWidth(e,t):"last"===this.stretch&&0!==this.stretchLastWidth&&(n=this._getStretchedLastColumnWidth(e)),n},_getStretchedAllColumnWidth:function(e,t){var n=0,r=o.get(this),i=r.totalColumns;if(!this.stretchAllColumnsWidth[e]){var s=Math.round(t*this.stretchAllRatio),a=r.stretchingColumnWidthFn(s,e);void 0===a?this.stretchAllColumnsWidth[e]=s:this.stretchAllColumnsWidth[e]=isNaN(a)?this._getColumnWidth(e):a}if(this.stretchAllColumnsWidth.length===i&&this.needVerifyLastColumnWidth){this.needVerifyLastColumnWidth=!1;for(var l=0;l<this.stretchAllColumnsWidth.length;l++)n+=this.stretchAllColumnsWidth[l];n!==this.totalTargetWidth&&(this.stretchAllColumnsWidth[this.stretchAllColumnsWidth.length-1]+=this.totalTargetWidth-n)}return this.stretchAllColumnsWidth[e]},_getStretchedLastColumnWidth:function(e){var t=o.get(this),n=t.totalColumns;return e===n-1?this.stretchLastWidth:null},_getColumnWidth:function(e){var t=o.get(this).columnWidthFn(e);return void 0===t&&(t=i.DEFAULT_WIDTH),t}},{get DEFAULT_WIDTH(){return 50}}),window.WalkontableViewportColumnsCalculator=r},{}],5:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableViewportRowsCalculator:{get:function(){return r}},__esModule:{value:!0}});var o=new WeakMap,r=function(e,t,n,r,i,s,a){o.set(this,{viewportHeight:e,scrollOffset:t,totalRows:n,rowHeightFn:r,overrideFn:i,onlyFullyVisible:s,horizontalScrollbarHeight:a}),this.count=0,this.startRow=null,this.endRow=null,this.startPosition=null,this.calculate()},i=r;$traceurRuntime.createClass(r,{calculate:function(){for(var e=0,t=!0,n=[],r=o.get(this),s=r.onlyFullyVisible,a=r.overrideFn,l=r.rowHeightFn,u=r.scrollOffset,c=r.totalRows,d=r.viewportHeight,h=r.horizontalScrollbarHeight||0,f=0;f<c;f++){var p=l(f);if(void 0===p&&(p=i.DEFAULT_HEIGHT),e<=u&&!s&&(this.startRow=f),e>=u&&e+p<=u+d-h&&(null===this.startRow&&(this.startRow=f),this.endRow=f),n.push(e),e+=p,s||(this.endRow=f),e>=u+d-h){t=!1;break}}if(this.endRow===c-1&&t)for(this.startRow=this.endRow;this.startRow>0;){var m=n[this.endRow]+p-n[this.startRow-1];if((m<=d-h||!s)&&this.startRow--,m>=d-h)break}null!==this.startRow&&a&&a(this),this.startPosition=n[this.startRow],void 0==this.startPosition&&(this.startPosition=null),null!==this.startRow&&(this.count=this.endRow-this.startRow+1)}},{get DEFAULT_HEIGHT(){return 23}}),window.WalkontableViewportRowsCalculator=r},{}],6:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableCellCoords:{get:function(){return o}},__esModule:{value:!0}});var o=function(e,t){"undefined"!=typeof e&&"undefined"!=typeof t?(this.row=e,this.col=t):(this.row=null,this.col=null)};$traceurRuntime.createClass(o,{isValid:function(e){return!(this.row<0||this.col<0)&&!(this.row>=e.getSetting("totalRows")||this.col>=e.getSetting("totalColumns"))},isEqual:function(e){return e===this||this.row===e.row&&this.col===e.col},isSouthEastOf:function(e){return this.row>=e.row&&this.col>=e.col},isNorthWestOf:function(e){return this.row<=e.row&&this.col<=e.col},isSouthWestOf:function(e){return this.row>=e.row&&this.col<=e.col},isNorthEastOf:function(e){return this.row<=e.row&&this.col>=e.col}},{}),window.WalkontableCellCoords=o},{}],7:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableCellRange:{get:function(){return i}},__esModule:{value:!0}});var o,r=(o=e("cell/coords"),o&&o.__esModule&&o||{default:o}).WalkontableCellCoords,i=function(e,t,n){this.highlight=e,this.from=t,this.to=n},s=i;$traceurRuntime.createClass(i,{isValid:function(e){return this.from.isValid(e)&&this.to.isValid(e)},isSingle:function(){return this.from.row===this.to.row&&this.from.col===this.to.col},getHeight:function(){return Math.max(this.from.row,this.to.row)-Math.min(this.from.row,this.to.row)+1},getWidth:function(){return Math.max(this.from.col,this.to.col)-Math.min(this.from.col,this.to.col)+1},includes:function(e){var t=e,n=t.row,o=t.col,r=this.getTopLeftCorner(),i=this.getBottomRightCorner();return r.row<=n&&i.row>=n&&r.col<=o&&i.col>=o},includesRange:function(e){return this.includes(e.getTopLeftCorner())&&this.includes(e.getBottomRightCorner())},isEqual:function(e){return Math.min(this.from.row,this.to.row)==Math.min(e.from.row,e.to.row)&&Math.max(this.from.row,this.to.row)==Math.max(e.from.row,e.to.row)&&Math.min(this.from.col,this.to.col)==Math.min(e.from.col,e.to.col)&&Math.max(this.from.col,this.to.col)==Math.max(e.from.col,e.to.col)},overlaps:function(e){return e.isSouthEastOf(this.getTopLeftCorner())&&e.isNorthWestOf(this.getBottomRightCorner())},isSouthEastOf:function(e){return this.getTopLeftCorner().isSouthEastOf(e)||this.getBottomRightCorner().isSouthEastOf(e)},isNorthWestOf:function(e){return this.getTopLeftCorner().isNorthWestOf(e)||this.getBottomRightCorner().isNorthWestOf(e)},expand:function(e){var t=this.getTopLeftCorner(),n=this.getBottomRightCorner();return(e.row<t.row||e.col<t.col||e.row>n.row||e.col>n.col)&&(this.from=new r(Math.min(t.row,e.row),Math.min(t.col,e.col)),this.to=new r(Math.max(n.row,e.row),Math.max(n.col,e.col)),!0)},expandByRange:function(e){if(this.includesRange(e)||!this.overlaps(e))return!1;var t=this.getTopLeftCorner(),n=this.getBottomRightCorner(),o=(this.getTopRightCorner(),this.getBottomLeftCorner(),e.getTopLeftCorner()),i=e.getBottomRightCorner(),a=Math.min(t.row,o.row),l=Math.min(t.col,o.col),u=Math.max(n.row,i.row),c=Math.max(n.col,i.col),d=new r(a,l),h=new r(u,c),f=new s(d,d,h).isCorner(this.from,e),p=e.isEqual(new s(d,d,h));return f&&!p&&(this.from.col>d.col&&(d.col=c,h.col=l),this.from.row>d.row&&(d.row=u,h.row=a)),this.from=d,this.to=h,!0},getDirection:function(){return this.from.isNorthWestOf(this.to)?"NW-SE":this.from.isNorthEastOf(this.to)?"NE-SW":this.from.isSouthEastOf(this.to)?"SE-NW":this.from.isSouthWestOf(this.to)?"SW-NE":void 0},setDirection:function(e){var t,n,o,r;switch(e){case"NW-SE":t=[this.getTopLeftCorner(),this.getBottomRightCorner()],this.from=t[0],this.to=t[1],t;break;case"NE-SW":n=[this.getTopRightCorner(),this.getBottomLeftCorner()],this.from=n[0],this.to=n[1],n;break;case"SE-NW":o=[this.getBottomRightCorner(),this.getTopLeftCorner()],this.from=o[0],this.to=o[1],o;break;case"SW-NE":r=[this.getBottomLeftCorner(),this.getTopRightCorner()],this.from=r[0],this.to=r[1],r}},getTopLeftCorner:function(){return new r(Math.min(this.from.row,this.to.row),Math.min(this.from.col,this.to.col))},getBottomRightCorner:function(){return new r(Math.max(this.from.row,this.to.row),Math.max(this.from.col,this.to.col))},getTopRightCorner:function(){return new r(Math.min(this.from.row,this.to.row),Math.max(this.from.col,this.to.col))},getBottomLeftCorner:function(){return new r(Math.max(this.from.row,this.to.row),Math.min(this.from.col,this.to.col))},isCorner:function(e,t){return!!(t&&t.includes(e)&&(this.getTopLeftCorner().isEqual(new r(t.from.row,t.from.col))||this.getTopRightCorner().isEqual(new r(t.from.row,t.to.col))||this.getBottomLeftCorner().isEqual(new r(t.to.row,t.from.col))||this.getBottomRightCorner().isEqual(new r(t.to.row,t.to.col))))||(e.isEqual(this.getTopLeftCorner())||e.isEqual(this.getTopRightCorner())||e.isEqual(this.getBottomLeftCorner())||e.isEqual(this.getBottomRightCorner()))},getOppositeCorner:function(e,t){if(!(e instanceof r))return!1;if(t&&t.includes(e)){if(this.getTopLeftCorner().isEqual(new r(t.from.row,t.from.col)))return this.getBottomRightCorner();if(this.getTopRightCorner().isEqual(new r(t.from.row,t.to.col)))return this.getBottomLeftCorner();if(this.getBottomLeftCorner().isEqual(new r(t.to.row,t.from.col)))return this.getTopRightCorner();if(this.getBottomRightCorner().isEqual(new r(t.to.row,t.to.col)))return this.getTopLeftCorner()}return e.isEqual(this.getBottomRightCorner())?this.getTopLeftCorner():e.isEqual(this.getTopLeftCorner())?this.getBottomRightCorner():e.isEqual(this.getTopRightCorner())?this.getBottomLeftCorner():e.isEqual(this.getBottomLeftCorner())?this.getTopRightCorner():void 0},getBordersSharedWith:function(e){if(!this.includesRange(e))return[];var t={top:Math.min(this.from.row,this.to.row),bottom:Math.max(this.from.row,this.to.row),left:Math.min(this.from.col,this.to.col),right:Math.max(this.from.col,this.to.col)},n={top:Math.min(e.from.row,e.to.row),bottom:Math.max(e.from.row,e.to.row),left:Math.min(e.from.col,e.to.col),right:Math.max(e.from.col,e.to.col)},o=[];return t.top==n.top&&o.push("top"),t.right==n.right&&o.push("right"),t.bottom==n.bottom&&o.push("bottom"),t.left==n.left&&o.push("left"),o},getInner:function(){for(var e=this.getTopLeftCorner(),t=this.getBottomRightCorner(),n=[],o=e.row;o<=t.row;o++)for(var i=e.col;i<=t.col;i++)this.from.row===o&&this.from.col===i||this.to.row===o&&this.to.col===i||n.push(new r(o,i));return n},getAll:function(){for(var e=this.getTopLeftCorner(),t=this.getBottomRightCorner(),n=[],o=e.row;o<=t.row;o++)for(var i=e.col;i<=t.col;i++)e.row===o&&e.col===i?n.push(e):t.row===o&&t.col===i?n.push(t):n.push(new r(o,i));return n},forAll:function(e){for(var t=this.getTopLeftCorner(),n=this.getBottomRightCorner(),o=t.row;o<=n.row;o++)for(var r=t.col;r<=n.col;r++){var i=e(o,r);if(i===!1)return}}},{}),window.WalkontableCellRange=i},{"cell/coords":6}],8:[function(e,t,n){"use strict";Object.defineProperties(n,{Walkontable:{get:function(){return H}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d,h,f,p,m,g,w=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}),v=w.addClass,y=w.fastInnerText,b=w.isVisible,C=w.removeClass,_=(r=e("helpers/object"),r&&r.__esModule&&r||{default:r}).objectEach,R=(i=e("helpers/string"),i&&i.__esModule&&i||{default:i}),M=R.toUpperCaseFirst,S=R.randomString,E=(s=e("event"),s&&s.__esModule&&s||{default:s}).WalkontableEvent,O=(a=e("overlays"),a&&a.__esModule&&a||{default:a}).WalkontableOverlays,T=(l=e("scroll"),l&&l.__esModule&&l||{default:l}).WalkontableScroll,k=(u=e("settings"),u&&u.__esModule&&u||{default:u}).WalkontableSettings,x=(c=e("table"),c&&c.__esModule&&c||{default:c}).WalkontableTable,D=(d=e("viewport"),d&&d.__esModule&&d||{default:d}).WalkontableViewport,H=((h=e("overlay/_base.js"),h&&h.__esModule&&h||{default:h}).WalkontableOverlay,(f=e("overlay/top.js"),f&&f.__esModule&&f||{default:f}).WalkontableTopOverlay,(p=e("overlay/left.js"),p&&p.__esModule&&p||{default:p}).WalkontableLeftOverlay,(m=e("overlay/debug.js"),m&&m.__esModule&&m||{default:m}).WalkontableDebugOverlay,(g=e("overlay/topLeftCorner.js"),g&&g.__esModule&&g||{default:g}).WalkontableTopLeftCornerOverlay,function(e){var t=[];if(this.guid="wt_"+S(),e.cloneSource?(this.cloneSource=e.cloneSource,this.cloneOverlay=e.cloneOverlay,this.wtSettings=e.cloneSource.wtSettings,this.wtTable=new x(this,e.table,e.wtRootElement),this.wtScroll=new T(this),this.wtViewport=e.cloneSource.wtViewport,this.wtEvent=new E(this),this.selections=this.cloneSource.selections):(this.wtSettings=new k(this,e),this.wtTable=new x(this,e.table),this.wtScroll=new T(this),this.wtViewport=new D(this),this.wtEvent=new E(this),this.selections=this.getSetting("selections"),this.wtOverlays=new O(this),this.exportSettingsAsClassNames()),this.wtTable.THEAD.childNodes.length&&this.wtTable.THEAD.childNodes[0].childNodes.length){for(var n=0,o=this.wtTable.THEAD.childNodes[0].childNodes.length;n<o;n++)t.push(this.wtTable.THEAD.childNodes[0].childNodes[n].innerHTML);this.getSetting("columnHeaders").length||this.update("columnHeaders",[function(e,n){y(n,t[e])}])}this.drawn=!1,this.drawInterrupted=!1});$traceurRuntime.createClass(H,{draw:function(){var e=void 0!==arguments[0]&&arguments[0];return this.drawInterrupted=!1,e||b(this.wtTable.TABLE)?this.wtTable.draw(e):this.drawInterrupted=!0,this},getCell:function(e){var t=void 0!==arguments[1]&&arguments[1];if(!t)return this.wtTable.getCell(e);var n=this.wtSettings.getSetting("totalRows"),o=this.wtSettings.getSetting("fixedRowsTop"),r=this.wtSettings.getSetting("fixedRowsBottom"),i=this.wtSettings.getSetting("fixedColumnsLeft");if(e.row<o&&e.col<i)return this.wtOverlays.topLeftCornerOverlay.clone.wtTable.getCell(e);if(e.row<o)return this.wtOverlays.topOverlay.clone.wtTable.getCell(e);if(e.col<i&&e.row>=n-r){if(this.wtOverlays.bottomLeftCornerOverlay&&this.wtOverlays.bottomLeftCornerOverlay.clone)return this.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.getCell(e)}else{if(e.col<i)return this.wtOverlays.leftOverlay.clone.wtTable.getCell(e);if(e.row<n&&e.row>n-r&&this.wtOverlays.bottomOverlay&&this.wtOverlays.bottomOverlay.clone)return this.wtOverlays.bottomOverlay.clone.wtTable.getCell(e)}return this.wtTable.getCell(e)},update:function(e,t){return this.wtSettings.update(e,t)},scrollVertical:function(e){return this.wtOverlays.topOverlay.scrollTo(e),this.getSetting("onScrollVertically"),this},scrollHorizontal:function(e){return this.wtOverlays.leftOverlay.scrollTo(e),this.getSetting("onScrollHorizontally"),this},scrollViewport:function(e){return this.wtScroll.scrollViewport(e),this},getViewport:function(){return[this.wtTable.getFirstVisibleRow(),this.wtTable.getFirstVisibleColumn(),this.wtTable.getLastVisibleRow(),this.wtTable.getLastVisibleColumn()]},getOverlayName:function(){return this.cloneOverlay?this.cloneOverlay.type:"master"},isOverlayName:function(e){return!!this.cloneOverlay&&this.cloneOverlay.type===e},exportSettingsAsClassNames:function(){var e=this,t={rowHeaders:["array"],columnHeaders:["array"]},n=[],o=[];_(t,function(t,r){t.indexOf("array")>-1&&e.getSetting(r).length&&o.push("ht"+M(r)),n.push("ht"+M(r))}),C(this.wtTable.wtRootElement.parentNode,n),v(this.wtTable.wtRootElement.parentNode,o)},getSetting:function(e,t,n,o,r){return this.wtSettings.getSetting(e,t,n,o,r)},hasSetting:function(e){return this.wtSettings.has(e)},destroy:function(){this.wtOverlays.destroy(),this.wtEvent.destroy()}},{}),window.Walkontable=H},{event:9,"helpers/dom/element":47,"helpers/object":53,"helpers/string":55,"overlay/_base.js":12,"overlay/debug.js":13,"overlay/left.js":14,"overlay/top.js":15,"overlay/topLeftCorner.js":16,overlays:17,scroll:18,settings:20,table:21,viewport:23}],9:[function(e,t,n){"use strict";function o(e){var t=this,n=m(e);this.instance=e;var o=[null,null];this.dblClickTimeout=[null,null];var r,i=function(e){var n=document.activeElement,r=f(h,e.realTarget),i=e.realTarget;if(i!==n&&r(0)!==n&&r(1)!==n){var s=t.parentCell(i);c(i,"corner")?t.instance.getSetting("onCellCornerMouseDown",e,i):s.TD&&t.instance.hasSetting("onCellMouseDown")&&t.instance.getSetting("onCellMouseDown",e,s.coords,s.TD,t.instance),2!==e.button&&s.TD&&(o[0]=s.TD,clearTimeout(t.dblClickTimeout[0]),t.dblClickTimeout[0]=setTimeout(function(){o[0]=null},1e3))}},s=function(e){t.instance.touchMoving=!0},a=function(e){n.addEventListener(this,"touchmove",s),t.checkIfTouchMove=setTimeout(function(){return t.instance.touchMoving===!0?(t.instance.touchMoving=void 0,void n.removeEventListener("touchmove",s,!1)):void i(e)},30)},l=function(e){var n,o,r;t.instance.hasSetting("onCellMouseOver")&&(n=t.instance.wtTable.TABLE,o=u(e.realTarget,["TD","TH"],n),r=t.instance.cloneSource||t.instance,o&&o!==r.lastMouseOver&&d(o,n)&&(r.lastMouseOver=o,t.instance.getSetting("onCellMouseOver",e,t.instance.wtTable.getCoords(o),o,t.instance)))},g=function(e){if(2!==e.button){var n=t.parentCell(e.realTarget);n.TD===o[0]&&n.TD===o[1]?(c(e.realTarget,"corner")?t.instance.getSetting("onCellCornerDblClick",e,n.coords,n.TD,t.instance):t.instance.getSetting("onCellDblClick",e,n.coords,n.TD,t.instance),o[0]=null,o[1]=null):n.TD===o[0]?(t.instance.getSetting("onCellMouseUp",e,n.coords,n.TD,t.instance),o[1]=n.TD,clearTimeout(t.dblClickTimeout[1]),t.dblClickTimeout[1]=setTimeout(function(){o[1]=null},500)):n.TD&&t.instance.hasSetting("onCellMouseUp")&&t.instance.getSetting("onCellMouseUp",e,n.coords,n.TD,t.instance)}},w=function(e){clearTimeout(r),e.preventDefault(),g(e)};if(n.addEventListener(this.instance.wtTable.holder,"mousedown",i),n.addEventListener(this.instance.wtTable.TABLE,"mouseover",l),n.addEventListener(this.instance.wtTable.holder,"mouseup",g),this.instance.wtTable.holder.parentNode.parentNode&&p()&&!t.instance.wtTable.isWorkingOnClone()){var v="."+this.instance.wtTable.holder.parentNode.className.split(" ").join(".");n.addEventListener(this.instance.wtTable.holder,"touchstart",function(e){t.instance.touchApplied=!0,d(e.target,v)&&a.call(e.target,e)}),n.addEventListener(this.instance.wtTable.holder,"touchend",function(e){t.instance.touchApplied=!1,d(e.target,v)&&w.call(e.target,e)}),t.instance.momentumScrolling||(t.instance.momentumScrolling={}),n.addEventListener(this.instance.wtTable.holder,"scroll",function(e){clearTimeout(t.instance.momentumScrolling._timeout),t.instance.momentumScrolling.ongoing||t.instance.getSetting("onBeforeTouchScroll"),t.instance.momentumScrolling.ongoing=!0,t.instance.momentumScrolling._timeout=setTimeout(function(){t.instance.touchApplied||(t.instance.momentumScrolling.ongoing=!1,t.instance.getSetting("onAfterMomentumScroll"))},200)})}n.addEventListener(window,"resize",function(){"none"!==t.instance.getSetting("stretchH")&&t.instance.draw()}),this.destroy=function(){clearTimeout(this.dblClickTimeout[0]),clearTimeout(this.dblClickTimeout[1]),n.destroy()}}Object.defineProperties(n,{WalkontableEvent:{get:function(){return o}},__esModule:{value:!0}});var r,i,s,a,l=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),u=l.closestDown,c=l.hasClass,d=l.isChildOf,h=l.getParent,f=(i=e("helpers/function"),i&&i.__esModule&&i||{default:i}).partial,p=(s=e("helpers/browser"),s&&s.__esModule&&s||{default:s}).isMobileBrowser,m=(a=e("eventManager"),a&&a.__esModule&&a||{default:a}).eventManager;o.prototype.parentCell=function(e){var t={},n=this.instance.wtTable.TABLE,o=u(e,["TD","TH"],n);return o?(t.coords=this.instance.wtTable.getCoords(o),t.TD=o):c(e,"wtBorder")&&c(e,"current")?(t.coords=this.instance.selections.current.cellRange.highlight,t.TD=this.instance.wtTable.getCell(t.coords)):c(e,"wtBorder")&&c(e,"area")&&this.instance.selections.area.cellRange&&(t.coords=this.instance.selections.area.cellRange.to,t.TD=this.instance.wtTable.getCell(t.coords)),t},window.WalkontableEvent=o},{eventManager:42,"helpers/browser":44,"helpers/dom/element":47,"helpers/function":50}],10:[function(e,t,n){"use strict";Object.defineProperties(n,{
WalkontableColumnFilter:{get:function(){return o}},__esModule:{value:!0}});var o=function(e,t,n){this.offset=e,this.total=t,this.countTH=n};$traceurRuntime.createClass(o,{offsetted:function(e){return e+this.offset},unOffsetted:function(e){return e-this.offset},renderedToSource:function(e){return this.offsetted(e)},sourceToRendered:function(e){return this.unOffsetted(e)},offsettedTH:function(e){return e-this.countTH},unOffsettedTH:function(e){return e+this.countTH},visibleRowHeadedColumnToSourceColumn:function(e){return this.renderedToSource(this.offsettedTH(e))},sourceColumnToVisibleRowHeadedColumn:function(e){return this.unOffsettedTH(this.sourceToRendered(e))}},{}),window.WalkontableColumnFilter=o},{}],11:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableRowFilter:{get:function(){return o}},__esModule:{value:!0}});var o=function(e,t,n){this.offset=e,this.total=t,this.countTH=n};$traceurRuntime.createClass(o,{offsetted:function(e){return e+this.offset},unOffsetted:function(e){return e-this.offset},renderedToSource:function(e){return this.offsetted(e)},sourceToRendered:function(e){return this.unOffsetted(e)},offsettedTH:function(e){return e-this.countTH},unOffsettedTH:function(e){return e+this.countTH},visibleColHeadedRowToSourceRow:function(e){return this.renderedToSource(this.offsettedTH(e))},sourceRowToVisibleColHeadedRow:function(e){return this.unOffsettedTH(this.sourceToRendered(e))}},{}),window.WalkontableRowFilter=o},{}],12:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableOverlay:{get:function(){return p}},__esModule:{value:!0}});var o,r,i,s,a=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}),l=a.getScrollableElement,u=a.getTrimmingContainer,c=(r=e("helpers/object"),r&&r.__esModule&&r||{default:r}).defineGetter,d=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}).arrayEach,h=(s=e("eventManager"),s&&s.__esModule&&s||{default:s}).eventManager,f={},p=function(e){c(this,"wot",e,{writable:!1}),this.instance=this.wot,this.type="",this.mainTableScrollableElement=null,this.TABLE=this.wot.wtTable.TABLE,this.hider=this.wot.wtTable.hider,this.spreader=this.wot.wtTable.spreader,this.holder=this.wot.wtTable.holder,this.wtRootElement=this.wot.wtTable.wtRootElement,this.trimmingContainer=u(this.hider.parentNode.parentNode),this.areElementSizesAdjusted=!1,this.updateStateOfRendering()},m=p;$traceurRuntime.createClass(p,{updateStateOfRendering:function(){var e=this.needFullRender;this.needFullRender=this.shouldBeRendered();var t=e!==this.needFullRender;return t&&!this.needFullRender&&this.reset(),t},shouldBeRendered:function(){return!0},updateTrimmingContainer:function(){this.trimmingContainer=u(this.hider.parentNode.parentNode)},updateMainScrollableElement:function(){this.mainTableScrollableElement=l(this.wot.wtTable.TABLE)},makeClone:function(e){if(m.CLONE_TYPES.indexOf(e)===-1)throw new Error('Clone type "'+e+'" is not supported.');var t=document.createElement("DIV"),n=document.createElement("TABLE");t.className="ht_clone_"+e+" handsontable",t.style.position="absolute",t.style.top=0,t.style.left=0,t.style.overflow="hidden",n.className=this.wot.wtTable.TABLE.className,t.appendChild(n),this.type=e,this.wot.wtTable.wtRootElement.parentNode.appendChild(t);var o=this.wot.getSetting("preventOverflow");return o===!0||"horizontal"===o&&this.type===m.CLONE_TOP||"vertical"===o&&this.type===m.CLONE_LEFT?this.mainTableScrollableElement=window:this.mainTableScrollableElement=l(this.wot.wtTable.TABLE),new Walkontable({cloneSource:this.wot,cloneOverlay:this,table:n})},refresh:function(){var e=void 0!==arguments[0]&&arguments[0],t=this.shouldBeRendered();this.clone&&(this.needFullRender||t)&&this.clone.draw(e),this.needFullRender=t},reset:function(){if(this.clone){var e=this.clone.wtTable.holder,t=this.clone.wtTable.hider,n=e.style,o=t.style,r=e.parentNode.style;d([n,o,r],function(e){e.width="",e.height=""})}},destroy:function(){h(this.clone).destroy()}},{get CLONE_TOP(){return"top"},get CLONE_BOTTOM(){return"bottom"},get CLONE_LEFT(){return"left"},get CLONE_TOP_LEFT_CORNER(){return"top_left_corner"},get CLONE_BOTTOM_LEFT_CORNER(){return"bottom_left_corner"},get CLONE_DEBUG(){return"debug"},get CLONE_TYPES(){return[m.CLONE_TOP,m.CLONE_BOTTOM,m.CLONE_LEFT,m.CLONE_TOP_LEFT_CORNER,m.CLONE_BOTTOM_LEFT_CORNER,m.CLONE_DEBUG]},registerOverlay:function(e,t){if(m.CLONE_TYPES.indexOf(e)===-1)throw new Error("Unsupported overlay ("+e+").");f[e]=t},createOverlay:function(e,t){return new f[e](t)},isOverlayTypeOf:function(e,t){return!(!e||!f[t])&&e instanceof f[t]}}),window.WalkontableOverlay=p},{eventManager:42,"helpers/array":43,"helpers/dom/element":47,"helpers/object":53}],13:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableDebugOverlay:{get:function(){return a}},__esModule:{value:!0}});var o,r,i=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}).addClass,s=(r=e("_base"),r&&r.__esModule&&r||{default:r}).WalkontableOverlay,a=function(e){$traceurRuntime.superConstructor(l).call(this,e),this.clone=this.makeClone(s.CLONE_DEBUG),this.clone.wtTable.holder.style.opacity=.4,this.clone.wtTable.holder.style.textShadow="0 0 2px #ff0000",i(this.clone.wtTable.holder.parentNode,"wtDebugVisible")},l=a;$traceurRuntime.createClass(a,{},{},s),window.WalkontableDebugOverlay=a,s.registerOverlay(s.CLONE_DEBUG,a)},{_base:12,"helpers/dom/element":47}],14:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableLeftOverlay:{get:function(){return w}},__esModule:{value:!0}});var o,r,i=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}),s=i.addClass,a=i.getScrollbarWidth,l=i.getScrollLeft,u=i.getWindowScrollTop,c=i.hasClass,d=i.outerWidth,h=i.innerHeight,f=i.removeClass,p=i.setOverlayPosition,m=i.resetCssTransform,g=(r=e("_base"),r&&r.__esModule&&r||{default:r}).WalkontableOverlay,w=function(e){$traceurRuntime.superConstructor(v).call(this,e),this.clone=this.makeClone(g.CLONE_LEFT)},v=w;$traceurRuntime.createClass(w,{shouldBeRendered:function(){return!(!this.wot.getSetting("fixedColumnsLeft")&&!this.wot.getSetting("rowHeaders").length)},resetFixedPosition:function(){if(this.needFullRender&&this.wot.wtTable.holder.parentNode){var e=this.clone.wtTable.holder.parentNode,t=0,n=this.wot.getSetting("preventOverflow");if(this.trimmingContainer!==window||n&&"horizontal"===n)t=this.getScrollPosition(),m(e);else{var o,r,i=this.wot.wtTable.hider.getBoundingClientRect(),s=Math.ceil(i.left),a=Math.ceil(i.right);r=this.wot.wtTable.hider.style.top,r=""===r?0:r,o=s<0&&a-e.offsetWidth>0?-s:0,t=o,o+="px",p(e,o,r)}this.adjustHeaderBordersPosition(t),this.adjustElementsSize()}},setScrollPosition:function(e){this.mainTableScrollableElement===window?window.scrollTo(e,u()):this.mainTableScrollableElement.scrollLeft=e},onScroll:function(){this.wot.getSetting("onScrollVertically")},sumCellSizes:function(e,t){for(var n=0,o=this.wot.wtSettings.defaultColumnWidth;e<t;)n+=this.wot.wtTable.getStretchedColumnWidth(e)||o,e++;return n},adjustElementsSize:function(){var e=void 0!==arguments[0]&&arguments[0];this.updateTrimmingContainer(),(this.needFullRender||e)&&(this.adjustRootElementSize(),this.adjustRootChildrenSize(),e||(this.areElementSizesAdjusted=!0))},adjustRootElementSize:function(){var e,t=this.wot.wtTable.holder,n=t.clientHeight===t.offsetHeight?0:a(),o=this.clone.wtTable.holder.parentNode,r=o.style,i=this.wot.getSetting("preventOverflow");if(this.trimmingContainer!==window||"vertical"===i){var s=this.wot.wtViewport.getWorkspaceHeight()-n;s=Math.min(s,h(this.wot.wtTable.wtRootElement)),r.height=s+"px"}else r.height="";this.clone.wtTable.holder.style.height=r.height,e=d(this.clone.wtTable.TABLE),r.width=(0===e?e:e+4)+"px"},adjustRootChildrenSize:function(){var e=a();this.clone.wtTable.hider.style.height=this.hider.style.height,this.clone.wtTable.holder.style.height=this.clone.wtTable.holder.parentNode.style.height,0===e&&(e=30),this.clone.wtTable.holder.style.width=parseInt(this.clone.wtTable.holder.parentNode.style.width,10)+e+"px"},applyToDOM:function(){var e=this.wot.getSetting("totalColumns");if(this.areElementSizesAdjusted||this.adjustElementsSize(),"number"==typeof this.wot.wtViewport.columnsRenderCalculator.startPosition)this.spreader.style.left=this.wot.wtViewport.columnsRenderCalculator.startPosition+"px";else{if(0!==e)throw new Error("Incorrect value of the columnsRenderCalculator");this.spreader.style.left="0"}this.spreader.style.right="",this.needFullRender&&this.syncOverlayOffset()},syncOverlayOffset:function(){"number"==typeof this.wot.wtViewport.rowsRenderCalculator.startPosition?this.clone.wtTable.spreader.style.top=this.wot.wtViewport.rowsRenderCalculator.startPosition+"px":this.clone.wtTable.spreader.style.top=""},scrollTo:function(e,t){var n=this.getTableParentOffset(),o=this.wot.cloneSource?this.wot.cloneSource:this.wot,r=o.wtTable.holder,i=0;t&&r.offsetWidth!==r.clientWidth&&(i=a()),t?(n+=this.sumCellSizes(0,e+1),n-=this.wot.wtViewport.getViewportWidth()):n+=this.sumCellSizes(this.wot.getSetting("fixedColumnsLeft"),e),n+=i,this.setScrollPosition(n)},getTableParentOffset:function(){var e=this.wot.getSetting("preventOverflow"),t=0;return e||this.trimmingContainer!==window||(t=this.wot.wtTable.holderOffset.left),t},getScrollPosition:function(){return l(this.mainTableScrollableElement)},adjustHeaderBordersPosition:function(e){var t=this.wot.wtTable.holder.parentNode,n=this.wot.getSetting("rowHeaders"),o=this.wot.getSetting("fixedColumnsLeft"),r=this.wot.getSetting("totalRows");if(r?f(t,"emptyRows"):s(t,"emptyRows"),o&&!n.length)s(t,"innerBorderLeft");else if(!o&&n.length){var i=c(t,"innerBorderLeft");e?s(t,"innerBorderLeft"):f(t,"innerBorderLeft"),(!i&&e||i&&!e)&&this.wot.wtOverlays.adjustElementsSize()}}},{},g),window.WalkontableLeftOverlay=w,g.registerOverlay(g.CLONE_LEFT,w)},{_base:12,"helpers/dom/element":47}],15:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableTopOverlay:{get:function(){return w}},__esModule:{value:!0}});var o,r,i=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}),s=i.addClass,a=i.getScrollbarWidth,l=i.getScrollTop,u=i.getWindowScrollLeft,c=i.hasClass,d=i.outerHeight,h=i.innerWidth,f=i.removeClass,p=i.setOverlayPosition,m=i.resetCssTransform,g=(r=e("_base"),r&&r.__esModule&&r||{default:r}).WalkontableOverlay,w=function(e){$traceurRuntime.superConstructor(v).call(this,e),this.clone=this.makeClone(g.CLONE_TOP)},v=w;$traceurRuntime.createClass(w,{shouldBeRendered:function(){return!(!this.wot.getSetting("fixedRowsTop")&&!this.wot.getSetting("columnHeaders").length)},resetFixedPosition:function(){if(this.needFullRender&&this.wot.wtTable.holder.parentNode){var e=this.clone.wtTable.holder.parentNode,t=0,n=this.wot.getSetting("preventOverflow");if(this.trimmingContainer!==window||n&&"vertical"===n)t=this.getScrollPosition(),m(e);else{var o,r,i=this.wot.wtTable.hider.getBoundingClientRect(),s=Math.ceil(i.top),a=Math.ceil(i.bottom);o=this.wot.wtTable.hider.style.left,o=""===o?0:o,r=s<0&&a-e.offsetHeight>0?-s:0,t=r,r+="px",p(e,o,r)}this.adjustHeaderBordersPosition(t),this.adjustElementsSize()}},setScrollPosition:function(e){this.mainTableScrollableElement===window?window.scrollTo(u(),e):this.mainTableScrollableElement.scrollTop=e},onScroll:function(){this.wot.getSetting("onScrollHorizontally")},sumCellSizes:function(e,t){for(var n=0,o=this.wot.wtSettings.settings.defaultRowHeight;e<t;){var r=this.wot.wtTable.getRowHeight(e);n+=void 0===r?o:r,e++}return n},adjustElementsSize:function(){var e=void 0!==arguments[0]&&arguments[0];this.updateTrimmingContainer(),(this.needFullRender||e)&&(this.adjustRootElementSize(),this.adjustRootChildrenSize(),e||(this.areElementSizesAdjusted=!0))},adjustRootElementSize:function(){var e,t=this.wot.wtTable.holder,n=t.clientWidth===t.offsetWidth?0:a(),o=this.clone.wtTable.holder.parentNode,r=o.style,i=this.wot.getSetting("preventOverflow");if(this.trimmingContainer!==window||"horizontal"===i){var s=this.wot.wtViewport.getWorkspaceWidth()-n;s=Math.min(s,h(this.wot.wtTable.wtRootElement)),r.width=s+"px"}else r.width="";this.clone.wtTable.holder.style.width=r.width,e=d(this.clone.wtTable.TABLE),r.height=(0===e?e:e+4)+"px"},adjustRootChildrenSize:function(){var e=a();this.clone.wtTable.hider.style.width=this.hider.style.width,this.clone.wtTable.holder.style.width=this.clone.wtTable.holder.parentNode.style.width,0===e&&(e=30),this.clone.wtTable.holder.style.height=parseInt(this.clone.wtTable.holder.parentNode.style.height,10)+e+"px"},applyToDOM:function(){var e=this.wot.getSetting("totalRows");if(this.areElementSizesAdjusted||this.adjustElementsSize(),"number"==typeof this.wot.wtViewport.rowsRenderCalculator.startPosition)this.spreader.style.top=this.wot.wtViewport.rowsRenderCalculator.startPosition+"px";else{if(0!==e)throw new Error("Incorrect value of the rowsRenderCalculator");this.spreader.style.top="0"}this.spreader.style.bottom="",this.needFullRender&&this.syncOverlayOffset()},syncOverlayOffset:function(){"number"==typeof this.wot.wtViewport.columnsRenderCalculator.startPosition?this.clone.wtTable.spreader.style.left=this.wot.wtViewport.columnsRenderCalculator.startPosition+"px":this.clone.wtTable.spreader.style.left=""},scrollTo:function(e,t){var n=this.getTableParentOffset(),o=this.wot.cloneSource?this.wot.cloneSource:this.wot,r=o.wtTable.holder,i=0;if(t&&r.offsetHeight!==r.clientHeight&&(i=a()),t){var s=this.wot.getSetting("fixedRowsBottom"),l=(this.wot.getSetting("fixedRowsTop"),this.wot.getSetting("totalRows"));n+=this.sumCellSizes(0,e+1),n-=this.wot.wtViewport.getViewportHeight()-this.sumCellSizes(l-s,l),n+=1}else n+=this.sumCellSizes(this.wot.getSetting("fixedRowsTop"),e);n+=i,this.setScrollPosition(n)},getTableParentOffset:function(){return this.mainTableScrollableElement===window?this.wot.wtTable.holderOffset.top:0},getScrollPosition:function(){return l(this.mainTableScrollableElement)},adjustHeaderBordersPosition:function(e){var t=this.wot.wtTable.holder.parentNode,n=this.wot.getSetting("totalColumns");if(n?f(t,"emptyColumns"):s(t,"emptyColumns"),0===this.wot.getSetting("fixedRowsTop")&&this.wot.getSetting("columnHeaders").length>0){var o=c(t,"innerBorderTop");e||0===this.wot.getSetting("totalRows")?s(t,"innerBorderTop"):f(t,"innerBorderTop"),(!o&&e||o&&!e)&&this.wot.wtOverlays.adjustElementsSize()}if(0===this.wot.getSetting("rowHeaders").length){var r=this.clone.wtTable.THEAD.querySelectorAll("th:nth-of-type(2)");if(r)for(var i=0;i<r.length;i++)r[i].style["border-left-width"]=0}}},{},g),window.WalkontableTopOverlay=w,g.registerOverlay(g.CLONE_TOP,w)},{_base:12,"helpers/dom/element":47}],16:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableTopLeftCornerOverlay:{get:function(){return d}},__esModule:{value:!0}});var o,r,i=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}),s=i.outerHeight,a=i.outerWidth,l=i.setOverlayPosition,u=i.resetCssTransform,c=(r=e("_base"),r&&r.__esModule&&r||{default:r}).WalkontableOverlay,d=function(e){$traceurRuntime.superConstructor(h).call(this,e),this.clone=this.makeClone(c.CLONE_TOP_LEFT_CORNER)},h=d;$traceurRuntime.createClass(d,{shouldBeRendered:function(){return!(!this.wot.getSetting("fixedRowsTop")&&!this.wot.getSetting("columnHeaders").length||!this.wot.getSetting("fixedColumnsLeft")&&!this.wot.getSetting("rowHeaders").length)},resetFixedPosition:function(){if(this.updateTrimmingContainer(),this.wot.wtTable.holder.parentNode){var e=this.clone.wtTable.holder.parentNode,t=s(this.clone.wtTable.TABLE),n=a(this.clone.wtTable.TABLE),o=this.wot.getSetting("preventOverflow");if(this.trimmingContainer===window){var r=this.wot.wtTable.hider.getBoundingClientRect(),i=Math.ceil(r.top),c=Math.ceil(r.left),d=Math.ceil(r.bottom),h=Math.ceil(r.right),f="0",p="0";o&&"vertical"!==o||c<0&&h-e.offsetWidth>0&&(f=-c+"px"),o&&"horizontal"!==o||i<0&&d-e.offsetHeight>0&&(p=-i+"px"),l(e,f,p)}else u(e);e.style.height=(0===t?t:t+4)+"px",e.style.width=(0===n?n:n+4)+"px"}}},{},c),window.WalkontableTopLeftCornerOverlay=d,c.registerOverlay(c.CLONE_TOP_LEFT_CORNER,d)},{_base:12,"helpers/dom/element":47}],17:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableOverlays:{get:function(){return w}},__esModule:{value:!0}});var o,r,i,s,a,l=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}),u=l.getScrollableElement,c=l.getScrollbarWidth,d=l.getScrollLeft,h=l.getScrollTop,f=(r=e("helpers/array"),r&&r.__esModule&&r||{default:r}).arrayEach,p=(i=e("helpers/unicode"),i&&i.__esModule&&i||{default:i}).isKey,m=(s=e("helpers/browser"),s&&s.__esModule&&s||{default:s}).isMobileBrowser,g=(a=e("eventManager"),a&&a.__esModule&&a||{default:a}).EventManager,w=function(e){this.wot=e,this.instance=this.wot,this.eventManager=new g(this.wot),this.wot.update("scrollbarWidth",c()),this.wot.update("scrollbarHeight",c()),this.scrollableElement=u(this.wot.wtTable.TABLE),this.prepareOverlays(),this.destroyed=!1,this.keyPressed=!1,this.spreaderLastSize={width:null,height:null},this.overlayScrollPositions={master:{top:0,left:0},top:{top:null,left:0},bottom:{top:null,left:0},left:{top:0,left:null}},this.pendingScrollCallbacks={master:{top:0,left:0},top:{left:0},bottom:{left:0},left:{top:0}},this.verticalScrolling=!1,this.horizontalScrolling=!1,this.delegatedScrollCallback=!1,this.registeredListeners=[],this.registerListeners()};$traceurRuntime.createClass(w,{prepareOverlays:function(){var e=!1;return this.topOverlay?e=this.topOverlay.updateStateOfRendering()||e:this.topOverlay=WalkontableOverlay.createOverlay(WalkontableOverlay.CLONE_TOP,this.wot),"undefined"==typeof WalkontableBottomOverlay&&(this.bottomOverlay={needFullRender:!1,updateStateOfRendering:function(){return!1}}),"undefined"==typeof WalkontableBottomLeftCornerOverlay&&(this.bottomLeftCornerOverlay={needFullRender:!1,updateStateOfRendering:function(){return!1}}),this.bottomOverlay?e=this.bottomOverlay.updateStateOfRendering()||e:this.bottomOverlay=WalkontableOverlay.createOverlay(WalkontableOverlay.CLONE_BOTTOM,this.wot),this.leftOverlay?e=this.leftOverlay.updateStateOfRendering()||e:this.leftOverlay=WalkontableOverlay.createOverlay(WalkontableOverlay.CLONE_LEFT,this.wot),this.topOverlay.needFullRender&&this.leftOverlay.needFullRender&&(this.topLeftCornerOverlay?e=this.topLeftCornerOverlay.updateStateOfRendering()||e:this.topLeftCornerOverlay=WalkontableOverlay.createOverlay(WalkontableOverlay.CLONE_TOP_LEFT_CORNER,this.wot)),this.bottomOverlay.needFullRender&&this.leftOverlay.needFullRender&&(this.bottomLeftCornerOverlay?e=this.bottomLeftCornerOverlay.updateStateOfRendering()||e:this.bottomLeftCornerOverlay=WalkontableOverlay.createOverlay(WalkontableOverlay.CLONE_BOTTOM_LEFT_CORNER,this.wot)),this.wot.getSetting("debug")&&!this.debug&&(this.debug=WalkontableOverlay.createOverlay(WalkontableOverlay.CLONE_DEBUG,this.wot)),e},refreshAll:function(){if(this.wot.drawn){if(!this.wot.wtTable.holder.parentNode)return void this.destroy();this.wot.draw(!0),this.verticalScrolling&&this.leftOverlay.onScroll(),this.horizontalScrolling&&this.topOverlay.onScroll(),this.verticalScrolling=!1,this.horizontalScrolling=!1}},registerListeners:function(){var e=this,t=this.topOverlay.mainTableScrollableElement,n=this.leftOverlay.mainTableScrollableElement,o=[];for(o.push([document.documentElement,"keydown",function(t){return e.onKeyDown(t)}]),o.push([document.documentElement,"keyup",function(){return e.onKeyUp()}]),o.push([document,"visibilitychange",function(){return e.onKeyUp()}]),o.push([t,"scroll",function(t){return e.onTableScroll(t)}]),t!==n&&o.push([n,"scroll",function(t){return e.onTableScroll(t)}]),this.topOverlay.needFullRender&&(o.push([this.topOverlay.clone.wtTable.holder,"scroll",function(t){return e.onTableScroll(t)}]),o.push([this.topOverlay.clone.wtTable.holder,"wheel",function(t){return e.onTableScroll(t)}])),this.bottomOverlay.needFullRender&&(o.push([this.bottomOverlay.clone.wtTable.holder,"scroll",function(t){return e.onTableScroll(t)}]),o.push([this.bottomOverlay.clone.wtTable.holder,"wheel",function(t){return e.onTableScroll(t)}])),this.leftOverlay.needFullRender&&(o.push([this.leftOverlay.clone.wtTable.holder,"scroll",function(t){return e.onTableScroll(t)}]),o.push([this.leftOverlay.clone.wtTable.holder,"wheel",function(t){return e.onTableScroll(t)}])),this.topLeftCornerOverlay&&this.topLeftCornerOverlay.needFullRender&&o.push([this.topLeftCornerOverlay.clone.wtTable.holder,"wheel",function(t){return e.onTableScroll(t)}]),this.bottomLeftCornerOverlay&&this.bottomLeftCornerOverlay.needFullRender&&o.push([this.bottomLeftCornerOverlay.clone.wtTable.holder,"wheel",function(t){return e.onTableScroll(t)}]),this.topOverlay.trimmingContainer!==window&&this.leftOverlay.trimmingContainer!==window&&o.push([window,"wheel",function(t){var n,o=t.wheelDeltaY||t.deltaY,r=t.wheelDeltaX||t.deltaX;e.topOverlay.clone.wtTable.holder.contains(t.realTarget)?n="top":e.bottomOverlay.clone&&e.bottomOverlay.clone.wtTable.holder.contains(t.realTarget)?n="bottom":e.leftOverlay.clone.wtTable.holder.contains(t.realTarget)?n="left":e.topLeftCornerOverlay&&e.topLeftCornerOverlay.clone&&e.topLeftCornerOverlay.clone.wtTable.holder.contains(t.realTarget)?n="topLeft":e.bottomLeftCornerOverlay&&e.bottomLeftCornerOverlay.clone&&e.bottomLeftCornerOverlay.clone.wtTable.holder.contains(t.realTarget)&&(n="bottomLeft"),("top"==n&&0!==o||"left"==n&&0!==r||"bottom"==n&&0!==o||("topLeft"===n||"bottomLeft"===n)&&(0!==o||0!==r))&&t.preventDefault()}]);o.length;){var r=o.pop();this.eventManager.addEventListener(r[0],r[1],r[2]),this.registeredListeners.push(r)}},deregisterListeners:function(){for(;this.registeredListeners.length;){var e=this.registeredListeners.pop();this.eventManager.removeEventListener(e[0],e[1],e[2])}},onTableScroll:function(e){if(!m()){var t=this.leftOverlay.mainTableScrollableElement,n=this.topOverlay.mainTableScrollableElement,o=e.target;this.keyPressed&&(n!==window&&o!==window&&!e.target.contains(n)||t!==window&&o!==window&&!e.target.contains(t))||("scroll"===e.type?this.syncScrollPositions(e):this.translateMouseWheelToScroll(e))}},onKeyDown:function(e){this.keyPressed=p(e.keyCode,"ARROW_UP|ARROW_RIGHT|ARROW_DOWN|ARROW_LEFT")},onKeyUp:function(){this.keyPressed=!1},translateMouseWheelToScroll:function(e){var t=this.topOverlay.clone.wtTable.holder,n=this.bottomOverlay.clone?this.bottomOverlay.clone.wtTable.holder:null,o=this.leftOverlay.clone.wtTable.holder,r=this.topLeftCornerOverlay&&this.topLeftCornerOverlay.clone?this.topLeftCornerOverlay.clone.wtTable.holder:null,i=this.bottomLeftCornerOverlay&&this.bottomLeftCornerOverlay.clone?this.bottomLeftCornerOverlay.clone.wtTable.holder:null,s=-.2,a=e.wheelDeltaY||-1*e.deltaY,l=e.wheelDeltaX||-1*e.deltaX,u=null,c={type:"wheel"},d=e.target,h=null;for(1===e.deltaMode&&(a*=120,l*=120);d!=document&&null!=d;){if(d.className.indexOf("wtHolder")>-1){u=d;break}d=d.parentNode}return c.target=u,u===r||u===i?(this.syncScrollPositions(c,s*l,"x"),this.syncScrollPositions(c,s*a,"y")):(u===t||u===n?h=a:u===o&&(h=l),this.syncScrollPositions(c,s*h)),!1},syncScrollPositions:function(e){var t=void 0!==arguments[1]?arguments[1]:null,n=void 0!==arguments[2]?arguments[2]:null;if(!this.destroyed){if(0===arguments.length)return void this.syncScrollWithMaster();var o,r,i,s,a,l=this.leftOverlay.mainTableScrollableElement,u=this.topOverlay.mainTableScrollableElement,c=e.target,f=0,p=!1,m=!1,g=this.wot.getSetting("preventOverflow");this.topOverlay.needFullRender&&(o=this.topOverlay.clone.wtTable.holder),this.bottomOverlay.needFullRender&&(a=this.bottomOverlay.clone.wtTable.holder),this.leftOverlay.needFullRender&&(r=this.leftOverlay.clone.wtTable.holder),this.leftOverlay.needFullRender&&this.topOverlay.needFullRender&&(i=this.topLeftCornerOverlay.clone.wtTable.holder),this.leftOverlay.needFullRender&&this.bottomOverlay.needFullRender&&(s=this.bottomLeftCornerOverlay.clone.wtTable.holder),c===document&&(c=window),c===l||c===u?(f=d(g?this.scrollableElement:c),this.horizontalScrolling=!0,this.overlayScrollPositions.master.left=f,p=!0,this.pendingScrollCallbacks.master.left>0?this.pendingScrollCallbacks.master.left--:(o&&o.scrollLeft!==f&&(null==t&&this.pendingScrollCallbacks.top.left++,o.scrollLeft=f,m=l!==window),a&&a.scrollLeft!==f&&(null==t&&this.pendingScrollCallbacks.bottom.left++,a.scrollLeft=f,m=l!==window)),f=h(c),this.verticalScrolling=!0,this.overlayScrollPositions.master.top=f,p=!0,this.pendingScrollCallbacks.master.top>0?this.pendingScrollCallbacks.master.top--:r&&r.scrollTop!==f&&(null==t&&this.pendingScrollCallbacks.left.top++,r.scrollTop=f,m=u!==window)):c===a?(f=d(c),this.horizontalScrolling=!0,this.overlayScrollPositions.bottom.left=f,p=!0,this.pendingScrollCallbacks.bottom.left>0?this.pendingScrollCallbacks.bottom.left--:(null==t&&this.pendingScrollCallbacks.master.left++,l.scrollLeft=f,o&&o.scrollLeft!==f&&(null==t&&this.pendingScrollCallbacks.top.left++,o.scrollLeft=f,m=u!==window)),null!==t&&(p=!0,u.scrollTop+=t)):c===o?(f=d(c),this.horizontalScrolling=!0,this.overlayScrollPositions.top.left=f,p=!0,this.pendingScrollCallbacks.top.left>0?this.pendingScrollCallbacks.top.left--:(null==t&&this.pendingScrollCallbacks.master.left++,l.scrollLeft=f),null!==t&&(p=!0,u.scrollTop+=t),a&&a.scrollLeft!==f&&(null==t&&this.pendingScrollCallbacks.bottom.left++,a.scrollLeft=f,m=u!==window)):c===r?(f=h(c),this.overlayScrollPositions.left.top!==f&&(this.verticalScrolling=!0,this.overlayScrollPositions.left.top=f,p=!0,this.pendingScrollCallbacks.left.top>0?this.pendingScrollCallbacks.left.top--:(null==t&&this.pendingScrollCallbacks.master.top++,u.scrollTop=f)),null!==t&&(p=!0,u.scrollLeft+=t)):c!==i&&c!==s||null!==t&&(p=!0,"x"===n?u.scrollLeft+=t:"y"===n&&(u.scrollTop+=t)),!this.keyPressed&&p&&"scroll"===e.type&&(this.delegatedScrollCallback?this.delegatedScrollCallback=!1:this.refreshAll(),m&&(this.delegatedScrollCallback=!0))}},syncScrollWithMaster:function(){var e=this.topOverlay.mainTableScrollableElement,t=e,n=t.scrollLeft,o=t.scrollTop;this.topOverlay.needFullRender&&(this.topOverlay.clone.wtTable.holder.scrollLeft=n),this.bottomOverlay.needFullRender&&(this.bottomOverlay.clone.wtTable.holder.scrollLeft=n),this.leftOverlay.needFullRender&&(this.leftOverlay.clone.wtTable.holder.scrollTop=o)},updateMainScrollableElements:function(){this.deregisterListeners(),this.leftOverlay.updateMainScrollableElement(),this.topOverlay.updateMainScrollableElement(),this.bottomOverlay.needFullRender&&this.bottomOverlay.updateMainScrollableElement(),this.scrollableElement=u(this.wot.wtTable.TABLE),this.registerListeners()},destroy:function(){this.eventManager.destroy(),this.topOverlay.destroy(),this.bottomOverlay.clone&&this.bottomOverlay.destroy(),this.leftOverlay.destroy(),this.topLeftCornerOverlay&&this.topLeftCornerOverlay.destroy(),this.bottomLeftCornerOverlay&&this.bottomLeftCornerOverlay.clone&&this.bottomLeftCornerOverlay.destroy(),this.debug&&this.debug.destroy(),this.destroyed=!0},refresh:function(){var e=void 0!==arguments[0]&&arguments[0];if(this.topOverlay.areElementSizesAdjusted&&this.leftOverlay.areElementSizesAdjusted){var t=this.wot.wtTable.wtRootElement.parentNode||this.wot.wtTable.wtRootElement,n=t.clientWidth,o=t.clientHeight;n===this.spreaderLastSize.width&&o===this.spreaderLastSize.height||(this.spreaderLastSize.width=n,this.spreaderLastSize.height=o,this.adjustElementsSize())}this.bottomOverlay.clone&&this.bottomOverlay.refresh(e),this.leftOverlay.refresh(e),this.topOverlay.refresh(e),this.topLeftCornerOverlay&&this.topLeftCornerOverlay.refresh(e),this.bottomLeftCornerOverlay&&this.bottomLeftCornerOverlay.clone&&this.bottomLeftCornerOverlay.refresh(e),this.debug&&this.debug.refresh(e)},adjustElementsSize:function(){var e=void 0!==arguments[0]&&arguments[0],t=this.wot.getSetting("totalColumns"),n=this.wot.getSetting("totalRows"),o=this.wot.wtViewport.getRowHeaderWidth(),r=this.wot.wtViewport.getColumnHeaderHeight(),i=this.wot.wtTable.hider.style;i.width=o+this.leftOverlay.sumCellSizes(0,t)+"px",i.height=r+this.topOverlay.sumCellSizes(0,n)+1+"px",this.topOverlay.adjustElementsSize(e),this.leftOverlay.adjustElementsSize(e),this.bottomOverlay.clone&&this.bottomOverlay.adjustElementsSize(e)},applyToDOM:function(){this.topOverlay.areElementSizesAdjusted&&this.leftOverlay.areElementSizesAdjusted||this.adjustElementsSize(),this.topOverlay.applyToDOM(),this.bottomOverlay.clone&&this.bottomOverlay.applyToDOM(),this.leftOverlay.applyToDOM()},getParentOverlay:function(e){if(!e)return null;var t=[this.topOverlay,this.leftOverlay,this.bottomOverlay,this.topLeftCornerOverlay,this.bottomLeftCornerOverlay],n=null;return f(t,function(t,o){t&&t.clone&&t.clone.wtTable.TABLE.contains(e)&&(n=t.clone)}),n}},{}),window.WalkontableOverlays=w},{eventManager:42,"helpers/array":43,"helpers/browser":44,"helpers/dom/element":47,"helpers/unicode":56}],18:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableScroll:{get:function(){return p}},__esModule:{value:!0}});var o,r,i=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}),s=i.innerHeight,a=i.innerWidth,l=i.getScrollLeft,u=i.getScrollTop,c=i.offset,d=(r=e("helpers/number"),r&&r.__esModule&&r||{default:r}),h=d.rangeEach,f=d.rangeEachReverse,p=function(e){this.wot=e,this.instance=e};$traceurRuntime.createClass(p,{scrollViewport:function(e){if(this.wot.drawn){var t=this._getVariables(),n=t.topOverlay,o=t.leftOverlay,r=t.totalRows,i=t.totalColumns,s=t.fixedRowsTop,a=t.fixedRowsBottom,l=t.fixedColumnsLeft;if(e.row<0||e.row>Math.max(r-1,0))throw new Error("row "+e.row+" does not exist");if(e.col<0||e.col>Math.max(i-1,0))throw new Error("column "+e.col+" does not exist");e.row>=s&&e.row<this.getFirstVisibleRow()?n.scrollTo(e.row):e.row>this.getLastVisibleRow()&&e.row<r-a&&n.scrollTo(e.row,!0),e.col>=l&&e.col<this.getFirstVisibleColumn()?o.scrollTo(e.col):e.col>this.getLastVisibleColumn()&&o.scrollTo(e.col,!0)}},getFirstVisibleRow:function(){var e=this._getVariables(),t=e.topOverlay,n=e.wtTable,o=e.wtViewport,r=e.totalRows,i=e.fixedRowsTop,a=n.getFirstVisibleRow();if(t.mainTableScrollableElement===window){var l=c(n.wtRootElement),d=s(n.hider),h=s(window),p=u(window);if(l.top+d-h<=p){var m=o.getColumnHeaderHeight();m+=t.sumCellSizes(0,i),f(r,1,function(e){if(m+=t.sumCellSizes(e-1,e),l.top+d-m<=p)return a=e,!1})}}return a},getLastVisibleRow:function(){var e=this._getVariables(),t=e.topOverlay,n=e.wtTable,o=e.wtViewport,r=e.totalRows,i=n.getLastVisibleRow();if(t.mainTableScrollableElement===window){var a=c(n.wtRootElement),l=s(window),d=u(window);if(a.top>d){var f=o.getColumnHeaderHeight();h(1,r,function(e){if(f+=t.sumCellSizes(e-1,e),a.top+f-d>=l)return i=e-2,!1})}}return i},getFirstVisibleColumn:function(){var e=this._getVariables(),t=e.leftOverlay,n=e.wtTable,o=e.wtViewport,r=e.totalColumns,i=(e.fixedColumnsLeft,n.getFirstVisibleColumn());if(t.mainTableScrollableElement===window){var s=c(n.wtRootElement),u=a(n.hider),d=a(window),h=l(window);if(s.left+u-d<=h){var p=o.getRowHeaderWidth();f(r,1,function(e){if(p+=t.sumCellSizes(e-1,e),s.left+u-p<=h)return i=e,!1})}}return i},getLastVisibleColumn:function(){var e=this._getVariables(),t=e.leftOverlay,n=e.wtTable,o=e.wtViewport,r=e.totalColumns,i=n.getLastVisibleColumn();if(t.mainTableScrollableElement===window){var s=c(n.wtRootElement),u=a(window),d=l(window);if(s.left>d){var f=o.getRowHeaderWidth();h(1,r,function(e){if(f+=t.sumCellSizes(e-1,e),s.left+f-d>=u)return i=e-2,!1})}}return i},_getVariables:function(){var e=this.wot,t=e.wtOverlays.topOverlay,n=e.wtOverlays.leftOverlay,o=e.wtTable,r=e.wtViewport,i=e.getSetting("totalRows"),s=e.getSetting("totalColumns"),a=e.getSetting("fixedRowsTop"),l=e.getSetting("fixedRowsBottom"),u=e.getSetting("fixedColumnsLeft");return{topOverlay:t,leftOverlay:n,wtTable:o,wtViewport:r,totalRows:i,totalColumns:s,fixedRowsTop:a,fixedRowsBottom:l,fixedColumnsLeft:u}}},{}),window.WalkontableScroll=p},{"helpers/dom/element":47,"helpers/number":52}],19:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableSelection:{get:function(){return d}},__esModule:{value:!0}});var o,r,i,s,a=(o=e("helpers/dom/element"),
o&&o.__esModule&&o||{default:o}).addClass,l=(r=e("border"),r&&r.__esModule&&r||{default:r}).WalkontableBorder,u=(i=e("cell/coords"),i&&i.__esModule&&i||{default:i}).WalkontableCellCoords,c=(s=e("cell/range"),s&&s.__esModule&&s||{default:s}).WalkontableCellRange,d=function(e,t){this.settings=e,this.cellRange=t||null,this.instanceBorders={}};$traceurRuntime.createClass(d,{getBorder:function(e){return this.instanceBorders[e.guid]?this.instanceBorders[e.guid]:void(this.instanceBorders[e.guid]=new l(e,this.settings))},isEmpty:function(){return null===this.cellRange},add:function(e){this.isEmpty()?this.cellRange=new c(e,e,e):this.cellRange.expand(e)},replace:function(e,t){if(!this.isEmpty()){if(this.cellRange.from.isEqual(e))return this.cellRange.from=t,!0;if(this.cellRange.to.isEqual(e))return this.cellRange.to=t,!0}return!1},clear:function(){this.cellRange=null},getCorners:function(){var e=this.cellRange.getTopLeftCorner(),t=this.cellRange.getBottomRightCorner();return[e.row,e.col,t.row,t.col]},addClassAtCoords:function(e,t,n,o){var r=e.wtTable.getCell(new u(t,n));"object"==typeof r&&a(r,o)},draw:function(e){if(this.isEmpty()){if(this.settings.border){var t=this.getBorder(e);t&&t.disappear()}}else{for(var n,o,r,i=e.wtTable.getRenderedRowsCount(),s=e.wtTable.getRenderedColumnsCount(),l=this.getCorners(),u=0;u<s;u++)if(o=e.wtTable.columnFilter.renderedToSource(u),o>=l[1]&&o<=l[3]&&(r=e.wtTable.getColumnHeader(o))){var c=[];this.settings.highlightHeaderClassName&&c.push(this.settings.highlightHeaderClassName),this.settings.highlightColumnClassName&&c.push(this.settings.highlightColumnClassName),a(r,c)}for(var d=0;d<i;d++){if(n=e.wtTable.rowFilter.renderedToSource(d),n>=l[0]&&n<=l[2]&&(r=e.wtTable.getRowHeader(n))){var h=[];this.settings.highlightHeaderClassName&&h.push(this.settings.highlightHeaderClassName),this.settings.highlightRowClassName&&h.push(this.settings.highlightRowClassName),a(r,h)}for(var f=0;f<s;f++)o=e.wtTable.columnFilter.renderedToSource(f),n>=l[0]&&n<=l[2]&&o>=l[1]&&o<=l[3]?this.settings.className&&this.addClassAtCoords(e,n,o,this.settings.className):n>=l[0]&&n<=l[2]?this.settings.highlightRowClassName&&this.addClassAtCoords(e,n,o,this.settings.highlightRowClassName):o>=l[1]&&o<=l[3]&&this.settings.highlightColumnClassName&&this.addClassAtCoords(e,n,o,this.settings.highlightColumnClassName)}if(e.getSetting("onBeforeDrawBorders",l,this.settings.className),this.settings.border){var p=this.getBorder(e);p&&p.appear(l)}}}},{}),window.WalkontableSelection=d},{border:3,"cell/coords":6,"cell/range":7,"helpers/dom/element":47}],20:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableSettings:{get:function(){return i}},__esModule:{value:!0}});var o,r=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}).fastInnerText,i=function(e,t){var n=this;this.wot=e,this.instance=e,this.defaults={table:void 0,debug:!1,externalRowCalculator:!1,stretchH:"none",currentRowClassName:null,currentColumnClassName:null,preventOverflow:function(){return!1},data:void 0,fixedColumnsLeft:0,fixedRowsTop:0,fixedRowsBottom:0,minSpareRows:0,rowHeaders:function(){return[]},columnHeaders:function(){return[]},totalRows:void 0,totalColumns:void 0,cellRenderer:function(e,t,o){var i=n.getSetting("data",e,t);r(o,void 0===i||null===i?"":i)},columnWidth:function(e){},rowHeight:function(e){},defaultRowHeight:23,defaultColumnWidth:50,selections:null,hideBorderOnMouseDownOver:!1,viewportRowCalculatorOverride:null,viewportColumnCalculatorOverride:null,onCellMouseDown:null,onCellMouseOver:null,onCellMouseUp:null,onCellDblClick:null,onCellCornerMouseDown:null,onCellCornerDblClick:null,beforeDraw:null,onDraw:null,onBeforeDrawBorders:null,onScrollVertically:null,onScrollHorizontally:null,onBeforeTouchScroll:null,onAfterMomentumScroll:null,onBeforeStretchingColumnWidth:function(e){return e},onModifyRowHeaderWidth:null,scrollbarWidth:10,scrollbarHeight:10,renderAllRows:!1,groups:!1,rowHeaderWidth:null,columnHeaderHeight:null,headerClassName:null},this.settings={};for(var o in this.defaults)if(this.defaults.hasOwnProperty(o))if(void 0!==t[o])this.settings[o]=t[o];else{if(void 0===this.defaults[o])throw new Error('A required setting "'+o+'" was not provided');this.settings[o]=this.defaults[o]}};$traceurRuntime.createClass(i,{update:function(e,t){if(void 0===t)for(var n in e)e.hasOwnProperty(n)&&(this.settings[n]=e[n]);else this.settings[e]=t;return this.wot},getSetting:function(e,t,n,o,r){return"function"==typeof this.settings[e]?this.settings[e](t,n,o,r):void 0!==t&&Array.isArray(this.settings[e])?this.settings[e][t]:this.settings[e]},has:function(e){return!!this.settings[e]}},{}),window.WalkontableSettings=i},{"helpers/dom/element":47}],21:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableTable:{get:function(){return S}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}),d=c.getStyle,h=c.getTrimmingContainer,f=c.hasClass,p=c.index,m=c.offset,g=c.removeClass,w=c.removeTextNodes,v=c.overlayContainsElement,y=c.closest,b=(r=e("helpers/function"),r&&r.__esModule&&r||{default:r}).isFunction,C=(i=e("cell/coords"),i&&i.__esModule&&i||{default:i}).WalkontableCellCoords,_=((s=e("cell/range"),s&&s.__esModule&&s||{default:s}).WalkontableCellRange,(a=e("filter/column"),a&&a.__esModule&&a||{default:a}).WalkontableColumnFilter),R=(l=e("filter/row"),l&&l.__esModule&&l||{default:l}).WalkontableRowFilter,M=(u=e("tableRenderer"),u&&u.__esModule&&u||{default:u}).WalkontableTableRenderer,S=function(e,t){var n=this;this.wot=e,this.instance=this.wot,this.TABLE=t,this.TBODY=null,this.THEAD=null,this.COLGROUP=null,this.tableOffset=0,this.holderOffset=0,w(this.TABLE),this.spreader=this.createSpreader(this.TABLE),this.hider=this.createHider(this.spreader),this.holder=this.createHolder(this.hider),this.wtRootElement=this.holder.parentNode,this.alignOverlaysWithTrimmingContainer(),this.fixTableDomTree(),this.colgroupChildrenLength=this.COLGROUP.childNodes.length,this.theadChildrenLength=this.THEAD.firstChild?this.THEAD.firstChild.childNodes.length:0,this.tbodyChildrenLength=this.TBODY.childNodes.length,this.rowFilter=null,this.columnFilter=null,this.correctHeaderWidth=!1;var o=this.wot.wtSettings.settings.rowHeaderWidth;this.wot.wtSettings.settings.rowHeaderWidth=function(){return n._modifyRowHeaderWidth(o)}};$traceurRuntime.createClass(S,{fixTableDomTree:function(){this.TBODY=this.TABLE.querySelector("tbody"),this.TBODY||(this.TBODY=document.createElement("tbody"),this.TABLE.appendChild(this.TBODY)),this.THEAD=this.TABLE.querySelector("thead"),this.THEAD||(this.THEAD=document.createElement("thead"),this.TABLE.insertBefore(this.THEAD,this.TBODY)),this.COLGROUP=this.TABLE.querySelector("colgroup"),this.COLGROUP||(this.COLGROUP=document.createElement("colgroup"),this.TABLE.insertBefore(this.COLGROUP,this.THEAD)),this.wot.getSetting("columnHeaders").length&&!this.THEAD.childNodes.length&&this.THEAD.appendChild(document.createElement("TR"))},createSpreader:function(e){var t,n=e.parentNode;return n&&1===n.nodeType&&f(n,"wtHolder")||(t=document.createElement("div"),t.className="wtSpreader",n&&n.insertBefore(t,e),t.appendChild(e)),t.style.position="relative",t},createHider:function(e){var t,n=e.parentNode;return n&&1===n.nodeType&&f(n,"wtHolder")||(t=document.createElement("div"),t.className="wtHider",n&&n.insertBefore(t,e),t.appendChild(e)),t},createHolder:function(e){var t,n=e.parentNode;return n&&1===n.nodeType&&f(n,"wtHolder")||(t=document.createElement("div"),t.style.position="relative",t.className="wtHolder",n&&n.insertBefore(t,e),this.isWorkingOnClone()||(t.parentNode.className+="ht_master handsontable"),t.appendChild(e)),t},alignOverlaysWithTrimmingContainer:function(){var e=h(this.wtRootElement);if(!this.isWorkingOnClone())if(this.holder.parentNode.style.position="relative",e===window){var t=this.wot.getSetting("preventOverflow");t||(this.holder.style.overflow="visible",this.wtRootElement.style.overflow="visible")}else this.holder.style.width=d(e,"width"),this.holder.style.height=d(e,"height"),this.holder.style.overflow=""},isWorkingOnClone:function(){return!!this.wot.cloneSource},draw:function(e){var t=this.wot,n=t.wtOverlays,o=t.wtViewport,r=this.instance.getSetting("totalRows"),i=this.wot.getSetting("rowHeaders").length,s=this.wot.getSetting("columnHeaders").length,a=!1;if(!this.isWorkingOnClone()&&(this.holderOffset=m(this.holder),e=o.createRenderCalculators(e),i&&!this.wot.getSetting("fixedColumnsLeft"))){var l=n.leftOverlay.getScrollPosition(),u=this.correctHeaderWidth;this.correctHeaderWidth=l>0,u!==this.correctHeaderWidth&&(e=!1)}if(this.isWorkingOnClone()||(a=n.prepareOverlays()),e)this.isWorkingOnClone()||o.createVisibleCalculators(),n&&n.refresh(!0);else{this.isWorkingOnClone()?this.tableOffset=this.wot.cloneSource.wtTable.tableOffset:this.tableOffset=m(this.TABLE);var c;c=WalkontableOverlay.isOverlayTypeOf(this.wot.cloneOverlay,WalkontableOverlay.CLONE_DEBUG)||WalkontableOverlay.isOverlayTypeOf(this.wot.cloneOverlay,WalkontableOverlay.CLONE_TOP)||WalkontableOverlay.isOverlayTypeOf(this.wot.cloneOverlay,WalkontableOverlay.CLONE_TOP_LEFT_CORNER)?0:WalkontableOverlay.isOverlayTypeOf(this.instance.cloneOverlay,WalkontableOverlay.CLONE_BOTTOM)||WalkontableOverlay.isOverlayTypeOf(this.instance.cloneOverlay,WalkontableOverlay.CLONE_BOTTOM_LEFT_CORNER)?Math.max(r-this.wot.getSetting("fixedRowsBottom"),0):o.rowsRenderCalculator.startRow;var d;d=WalkontableOverlay.isOverlayTypeOf(this.wot.cloneOverlay,WalkontableOverlay.CLONE_DEBUG)||WalkontableOverlay.isOverlayTypeOf(this.wot.cloneOverlay,WalkontableOverlay.CLONE_LEFT)||WalkontableOverlay.isOverlayTypeOf(this.wot.cloneOverlay,WalkontableOverlay.CLONE_TOP_LEFT_CORNER)||WalkontableOverlay.isOverlayTypeOf(this.wot.cloneOverlay,WalkontableOverlay.CLONE_BOTTOM_LEFT_CORNER)?0:o.columnsRenderCalculator.startColumn,this.rowFilter=new R(c,r,s),this.columnFilter=new _(d,this.wot.getSetting("totalColumns"),i),this.alignOverlaysWithTrimmingContainer(),this._doDraw()}return this.refreshSelections(e),this.isWorkingOnClone()||(n.topOverlay.resetFixedPosition(),n.bottomOverlay.clone&&n.bottomOverlay.resetFixedPosition(),n.leftOverlay.resetFixedPosition(),n.topLeftCornerOverlay&&n.topLeftCornerOverlay.resetFixedPosition(),n.bottomLeftCornerOverlay&&n.bottomLeftCornerOverlay.clone&&n.bottomLeftCornerOverlay.resetFixedPosition()),a&&n.syncScrollWithMaster(),this.wot.drawn=!0,this},_doDraw:function(){var e=new M(this);e.render()},removeClassFromCells:function(e){for(var t=this.TABLE.querySelectorAll("."+e),n=0,o=t.length;n<o;n++)g(t[n],e)},refreshSelections:function(e){if(this.wot.selections){var t=this.wot.selections.length;if(e)for(var n=0;n<t;n++)this.wot.selections[n].settings.className&&this.removeClassFromCells(this.wot.selections[n].settings.className),this.wot.selections[n].settings.highlightHeaderClassName&&this.removeClassFromCells(this.wot.selections[n].settings.highlightHeaderClassName),this.wot.selections[n].settings.highlightRowClassName&&this.removeClassFromCells(this.wot.selections[n].settings.highlightRowClassName),this.wot.selections[n].settings.highlightColumnClassName&&this.removeClassFromCells(this.wot.selections[n].settings.highlightColumnClassName);for(var o=0;o<t;o++)this.wot.selections[o].draw(this.wot,e)}},getCell:function(e){if(this.isRowBeforeRenderedRows(e.row))return-1;if(this.isRowAfterRenderedRows(e.row))return-2;var t=this.TBODY.childNodes[this.rowFilter.sourceToRendered(e.row)];return t?t.childNodes[this.columnFilter.sourceColumnToVisibleRowHeadedColumn(e.col)]:void 0},getColumnHeader:function(e){var t=void 0!==arguments[1]?arguments[1]:0,n=this.THEAD.childNodes[t];if(n)return n.childNodes[this.columnFilter.sourceColumnToVisibleRowHeadedColumn(e)]},getRowHeader:function(e){if(0===this.columnFilter.sourceColumnToVisibleRowHeadedColumn(0))return null;var t=this.TBODY.childNodes[this.rowFilter.sourceToRendered(e)];return t?t.childNodes[0]:void 0},getCoords:function(e){"TD"!==e.nodeName&&"TH"!==e.nodeName&&(e=y(e,["TD","TH"]));var t=e.parentNode,n=t.parentNode,o=p(t),r=e.cellIndex;return v(WalkontableOverlay.CLONE_TOP_LEFT_CORNER,e)||v(WalkontableOverlay.CLONE_TOP,e)?"THEAD"===n.nodeName&&(o-=n.childNodes.length):o=n===this.THEAD?this.rowFilter.visibleColHeadedRowToSourceRow(o):this.rowFilter.renderedToSource(o),r=v(WalkontableOverlay.CLONE_TOP_LEFT_CORNER,e)||v(WalkontableOverlay.CLONE_LEFT,e)?this.columnFilter.offsettedTH(r):this.columnFilter.visibleRowHeadedColumnToSourceColumn(r),new C(o,r)},getTrForRow:function(e){return this.TBODY.childNodes[this.rowFilter.sourceToRendered(e)]},getFirstRenderedRow:function(){return this.wot.wtViewport.rowsRenderCalculator.startRow},getFirstVisibleRow:function(){return this.wot.wtViewport.rowsVisibleCalculator.startRow},getFirstRenderedColumn:function(){return this.wot.wtViewport.columnsRenderCalculator.startColumn},getFirstVisibleColumn:function(){return this.wot.wtViewport.columnsVisibleCalculator.startColumn},getLastRenderedRow:function(){return this.wot.wtViewport.rowsRenderCalculator.endRow},getLastVisibleRow:function(){return this.wot.wtViewport.rowsVisibleCalculator.endRow},getLastRenderedColumn:function(){return this.wot.wtViewport.columnsRenderCalculator.endColumn},getLastVisibleColumn:function(){return this.wot.wtViewport.columnsVisibleCalculator.endColumn},isRowBeforeRenderedRows:function(e){return this.rowFilter&&this.rowFilter.sourceToRendered(e)<0&&e>=0},isRowAfterViewport:function(e){return this.rowFilter&&this.rowFilter.sourceToRendered(e)>this.getLastVisibleRow()},isRowAfterRenderedRows:function(e){return this.rowFilter&&this.rowFilter.sourceToRendered(e)>this.getLastRenderedRow()},isColumnBeforeViewport:function(e){return this.columnFilter&&this.columnFilter.sourceToRendered(e)<0&&e>=0},isColumnAfterViewport:function(e){return this.columnFilter&&this.columnFilter.sourceToRendered(e)>this.getLastVisibleColumn()},isLastRowFullyVisible:function(){return this.getLastVisibleRow()===this.getLastRenderedRow()},isLastColumnFullyVisible:function(){return this.getLastVisibleColumn()===this.getLastRenderedColumn()},getRenderedColumnsCount:function(){var e=this.wot.wtViewport.columnsRenderCalculator.count,t=this.wot.getSetting("totalColumns");if(this.wot.isOverlayName(WalkontableOverlay.CLONE_DEBUG))e=t;else if(this.wot.isOverlayName(WalkontableOverlay.CLONE_LEFT)||this.wot.isOverlayName(WalkontableOverlay.CLONE_TOP_LEFT_CORNER)||this.wot.isOverlayName(WalkontableOverlay.CLONE_BOTTOM_LEFT_CORNER))return Math.min(this.wot.getSetting("fixedColumnsLeft"),t);return e},getRenderedRowsCount:function(){var e=this.wot.wtViewport.rowsRenderCalculator.count,t=this.wot.getSetting("totalRows");return this.wot.isOverlayName(WalkontableOverlay.CLONE_DEBUG)?e=t:this.wot.isOverlayName(WalkontableOverlay.CLONE_TOP)||this.wot.isOverlayName(WalkontableOverlay.CLONE_TOP_LEFT_CORNER)?e=Math.min(this.wot.getSetting("fixedRowsTop"),t):(this.wot.isOverlayName(WalkontableOverlay.CLONE_BOTTOM)||this.wot.isOverlayName(WalkontableOverlay.CLONE_BOTTOM_LEFT_CORNER))&&(e=Math.min(this.wot.getSetting("fixedRowsBottom"),t)),e},getVisibleRowsCount:function(){return this.wot.wtViewport.rowsVisibleCalculator.count},allRowsInViewport:function(){return this.wot.getSetting("totalRows")==this.getVisibleRowsCount()},getRowHeight:function(e){var t=this.wot.wtSettings.settings.rowHeight(e),n=this.wot.wtViewport.oversizedRows[e];return void 0!==n&&(t=void 0===t?n:Math.max(t,n)),t},getColumnHeaderHeight:function(e){var t=this.wot.wtSettings.settings.defaultRowHeight,n=this.wot.wtViewport.oversizedColumnHeaders[e];return void 0!==n&&(t=t?Math.max(t,n):n),t},getVisibleColumnsCount:function(){return this.wot.wtViewport.columnsVisibleCalculator.count},allColumnsInViewport:function(){return this.wot.getSetting("totalColumns")==this.getVisibleColumnsCount()},getColumnWidth:function(e){var t=this.wot.wtSettings.settings.columnWidth;return"function"==typeof t?t=t(e):"object"==typeof t&&(t=t[e]),t||this.wot.wtSettings.settings.defaultColumnWidth},getStretchedColumnWidth:function(e){var t=this.getColumnWidth(e),n=null==t?this.instance.wtSettings.settings.defaultColumnWidth:t,o=this.wot.wtViewport.columnsRenderCalculator;if(o){var r=o.getStretchedColumnWidth(e,n);r&&(n=r)}return n},_modifyRowHeaderWidth:function(e){var t=b(e)?e():null;return Array.isArray(t)?(t=$traceurRuntime.spread(t),t[t.length-1]=this._correctRowHeaderWidth(t[t.length-1])):t=this._correctRowHeaderWidth(t),t},_correctRowHeaderWidth:function(e){return"number"!=typeof e&&(e=this.wot.getSetting("defaultColumnWidth")),this.correctHeaderWidth&&e++,e}},{}),window.WalkontableTable=S},{"cell/coords":6,"cell/range":7,"filter/column":10,"filter/row":11,"helpers/dom/element":47,"helpers/function":50,tableRenderer:22}],22:[function(e,t,n){"use strict";function o(e,t){var n=document.createElement("TH");return t.insertBefore(n,e),t.removeChild(e),n}function r(e,t){var n=document.createElement("TD");return t.insertBefore(n,e),t.removeChild(e),n}Object.defineProperties(n,{WalkontableTableRenderer:{get:function(){return p}},__esModule:{value:!0}});var i,s=(i=e("helpers/dom/element"),i&&i.__esModule&&i||{default:i}),a=s.addClass,l=s.empty,u=s.getScrollbarWidth,c=s.hasClass,d=s.innerHeight,h=s.outerWidth,f=!1,p=function(e){this.wtTable=e,this.wot=e.instance,this.instance=e.instance,this.rowFilter=e.rowFilter,this.columnFilter=e.columnFilter,this.TABLE=e.TABLE,this.THEAD=e.THEAD,this.TBODY=e.TBODY,this.COLGROUP=e.COLGROUP,this.rowHeaders=[],this.rowHeaderCount=0,this.columnHeaders=[],this.columnHeaderCount=0,this.fixedRowsTop=0,this.fixedRowsBottom=0};$traceurRuntime.createClass(p,{render:function(){if(!this.wtTable.isWorkingOnClone()){var e={};if(this.wot.getSetting("beforeDraw",!0,e),e.skipRender===!0)return}this.rowHeaders=this.wot.getSetting("rowHeaders"),this.rowHeaderCount=this.rowHeaders.length,this.fixedRowsTop=this.wot.getSetting("fixedRowsTop"),this.fixedRowsBottom=this.wot.getSetting("fixedRowsBottom"),this.columnHeaders=this.wot.getSetting("columnHeaders"),this.columnHeaderCount=this.columnHeaders.length;var t,n=this.wtTable.getRenderedColumnsCount(),o=this.wtTable.getRenderedRowsCount(),r=this.wot.getSetting("totalColumns"),i=this.wot.getSetting("totalRows"),s=!1;if((WalkontableOverlay.isOverlayTypeOf(this.wot.cloneOverlay,WalkontableOverlay.CLONE_BOTTOM)||WalkontableOverlay.isOverlayTypeOf(this.wot.cloneOverlay,WalkontableOverlay.CLONE_BOTTOM_LEFT_CORNER))&&(this.columnHeaders=[],this.columnHeaderCount=0),r>=0&&(this.adjustAvailableNodes(),s=!0,this.renderColumnHeaders(),this.renderRows(i,o,n),this.wtTable.isWorkingOnClone()||(t=this.wot.wtViewport.getWorkspaceWidth(),this.wot.wtViewport.containerWidth=null),this.adjustColumnWidths(n),this.markOversizedColumnHeaders(),this.adjustColumnHeaderHeights()),s||this.adjustAvailableNodes(),this.removeRedundantRows(o),this.wtTable.isWorkingOnClone()&&!this.wot.isOverlayName(WalkontableOverlay.CLONE_BOTTOM)||this.markOversizedRows(),this.wtTable.isWorkingOnClone())this.wot.isOverlayName(WalkontableOverlay.CLONE_BOTTOM)&&this.wot.cloneSource.wtOverlays.adjustElementsSize();else{this.wot.wtViewport.createVisibleCalculators(),this.wot.wtOverlays.refresh(!1),this.wot.wtOverlays.applyToDOM();var a=h(this.wtTable.hider),l=h(this.wtTable.TABLE);if(0!==a&&l!==a&&this.adjustColumnWidths(n),t!==this.wot.wtViewport.getWorkspaceWidth()){this.wot.wtViewport.containerWidth=null;var u=this.wtTable.getFirstRenderedColumn(),c=this.wtTable.getLastRenderedColumn(),d=this.wot.getSetting("defaultColumnWidth"),f=this.wot.getSetting("rowHeaderWidth");if(f=this.instance.getSetting("onModifyRowHeaderWidth",f),null!=f)for(var p=0;p<this.rowHeaderCount;p++){var m=Array.isArray(f)?f[p]:f;m=null==m?d:m,this.COLGROUP.childNodes[p].style.width=m+"px"}for(var g=u;g<c;g++){var w=this.wtTable.getStretchedColumnWidth(g),v=this.columnFilter.sourceToRendered(g);this.COLGROUP.childNodes[v+this.rowHeaderCount].style.width=w+"px"}}this.wot.getSetting("onDraw",!0)}},removeRedundantRows:function(e){for(;this.wtTable.tbodyChildrenLength>e;)this.TBODY.removeChild(this.TBODY.lastChild),this.wtTable.tbodyChildrenLength--},renderRows:function(e,t,n){for(var o,r,i=0,s=this.rowFilter.renderedToSource(i),a=this.wtTable.isWorkingOnClone();s<e&&s>=0&&(!f&&i>1e3&&(f=!0,console.warn('Performance tip: Handsontable rendered more than 1000 visible rows. Consider limiting the number of rendered rows by specifying the table height and/or turning off the "renderAllRows" option.')),void 0===t||i!==t);){if(r=this.getOrCreateTrForRow(i,r),this.renderRowHeaders(s,r),this.adjustColumns(r,n+this.rowHeaderCount),o=this.renderCells(s,r,n),a&&!this.wot.isOverlayName(WalkontableOverlay.CLONE_BOTTOM)||this.resetOversizedRow(s),r.firstChild){var l=this.wot.wtTable.getRowHeight(s);l?(l--,r.firstChild.style.height=l+"px"):r.firstChild.style.height=""}i++,s=this.rowFilter.renderedToSource(i)}},resetOversizedRow:function(e){this.wot.getSetting("externalRowCalculator")||this.wot.wtViewport.oversizedRows&&this.wot.wtViewport.oversizedRows[e]&&(this.wot.wtViewport.oversizedRows[e]=void 0)},markOversizedRows:function(){if(!this.wot.getSetting("externalRowCalculator")){var e,t,n,o,r,i=this.instance.wtTable.TBODY.childNodes.length,s=i*this.instance.wtSettings.settings.defaultRowHeight,a=d(this.instance.wtTable.TBODY)-1;this.instance.getSetting("totalRows");if(s!==a||this.instance.getSetting("fixedRowsBottom"))for(;i;)i--,n=this.instance.wtTable.rowFilter.renderedToSource(i),e=this.instance.wtTable.getRowHeight(n),o=this.instance.wtTable.getTrForRow(n),r=o.querySelector("th"),t=r?d(r):d(o)-1,(!e&&this.instance.wtSettings.settings.defaultRowHeight<t||e<t)&&(this.instance.wtViewport.oversizedRows[n]=++t)}},markOversizedColumnHeaders:function(){var e=this.wot.getOverlayName();if(this.columnHeaderCount&&!this.wot.wtViewport.hasOversizedColumnHeadersMarked[e]&&!this.wtTable.isWorkingOnClone()){for(var t=this.wtTable.getRenderedColumnsCount(),n=0;n<this.columnHeaderCount;n++)for(var o=-1*this.rowHeaderCount;o<t;o++)this.markIfOversizedColumnHeader(o);this.wot.wtViewport.hasOversizedColumnHeadersMarked[e]=!0}},adjustColumnHeaderHeights:function(){for(var e=this.wot.getSetting("columnHeaders"),t=this.wot.wtTable.THEAD.childNodes,n=this.wot.wtViewport.oversizedColumnHeaders,o=0,r=e.length;o<r;o++)if(n[o]){if(!t[o]||0===t[o].childNodes.length)return;t[o].childNodes[0].style.height=n[o]+"px"}},markIfOversizedColumnHeader:function(e){for(var t,n,o,r=this.wot.wtTable.columnFilter.renderedToSource(e),i=this.columnHeaderCount,s=this.wot.wtSettings.settings.defaultRowHeight,a=this.wot.getSetting("columnHeaderHeight")||[];i;)i--,t=this.wot.wtTable.getColumnHeaderHeight(i),n=this.wot.wtTable.getColumnHeader(r,i),n&&(o=d(n),(!t&&s<o||t<o)&&(this.wot.wtViewport.oversizedColumnHeaders[i]=o),Array.isArray(a)?null!=a[i]&&(this.wot.wtViewport.oversizedColumnHeaders[i]=a[i]):isNaN(a)||(this.wot.wtViewport.oversizedColumnHeaders[i]=a),this.wot.wtViewport.oversizedColumnHeaders[i]<(a[i]||a)&&(this.wot.wtViewport.oversizedColumnHeaders[i]=a[i]||a))},renderCells:function(e,t,n){for(var o,i,s=0;s<n;s++)i=this.columnFilter.renderedToSource(s),o=0===s?t.childNodes[this.columnFilter.sourceColumnToVisibleRowHeadedColumn(i)]:o.nextSibling,"TH"==o.nodeName&&(o=r(o,t)),c(o,"hide")||(o.className=""),o.removeAttribute("style"),this.wot.wtSettings.settings.cellRenderer(e,i,o);return o},adjustColumnWidths:function(e){var t=0,n=this.wot.cloneSource?this.wot.cloneSource:this.wot,o=n.wtTable.holder,r=this.wot.getSetting("defaultColumnWidth"),i=this.wot.getSetting("rowHeaderWidth");if(o.offsetHeight<o.scrollHeight&&(t=u()),this.wot.wtViewport.columnsRenderCalculator.refreshStretching(this.wot.wtViewport.getViewportWidth()-t),i=this.instance.getSetting("onModifyRowHeaderWidth",i),null!=i)for(var s=0;s<this.rowHeaderCount;s++){var a=Array.isArray(i)?i[s]:i;a=null==a?r:a,this.COLGROUP.childNodes[s].style.width=a+"px"}for(var l=0;l<e;l++){var c=this.wtTable.getStretchedColumnWidth(this.columnFilter.renderedToSource(l));this.COLGROUP.childNodes[l+this.rowHeaderCount].style.width=c+"px"}},appendToTbody:function(e){this.TBODY.appendChild(e),this.wtTable.tbodyChildrenLength++},getOrCreateTrForRow:function(e,t){var n;return e>=this.wtTable.tbodyChildrenLength?(n=this.createRow(),this.appendToTbody(n)):n=0===e?this.TBODY.firstChild:t.nextSibling,n.className&&n.removeAttribute("class"),n},createRow:function(){for(var e=document.createElement("TR"),t=0;t<this.rowHeaderCount;t++)e.appendChild(document.createElement("TH"));return e},renderRowHeader:function(e,t,n){n.className="",n.removeAttribute("style"),this.rowHeaders[t](e,n,t)},renderRowHeaders:function(e,t){for(var n=t.firstChild,r=0;r<this.rowHeaderCount;r++)n?"TD"==n.nodeName&&(n=o(n,t)):(n=document.createElement("TH"),t.appendChild(n)),this.renderRowHeader(e,r,n),n=n.nextSibling},adjustAvailableNodes:function(){this.adjustColGroups(),this.adjustThead()},renderColumnHeaders:function(){if(this.columnHeaderCount)for(var e=this.wtTable.getRenderedColumnsCount(),t=0;t<this.columnHeaderCount;t++)for(var n=this.getTrForColumnHeaders(t),o=-1*this.rowHeaderCount;o<e;o++){var r=this.columnFilter.renderedToSource(o);this.renderColumnHeader(t,r,n.childNodes[o+this.rowHeaderCount])}},adjustColGroups:function(){for(var e=this.wtTable.getRenderedColumnsCount();this.wtTable.colgroupChildrenLength<e+this.rowHeaderCount;)this.COLGROUP.appendChild(document.createElement("COL")),this.wtTable.colgroupChildrenLength++;for(;this.wtTable.colgroupChildrenLength>e+this.rowHeaderCount;)this.COLGROUP.removeChild(this.COLGROUP.lastChild),this.wtTable.colgroupChildrenLength--;this.rowHeaderCount&&a(this.COLGROUP.childNodes[0],"rowHeader")},adjustThead:function(){var e=this.wtTable.getRenderedColumnsCount(),t=this.THEAD.firstChild;if(this.columnHeaders.length){for(var n=0,o=this.columnHeaders.length;n<o;n++){for(t=this.THEAD.childNodes[n],t||(t=document.createElement("TR"),this.THEAD.appendChild(t)),this.theadChildrenLength=t.childNodes.length;this.theadChildrenLength<e+this.rowHeaderCount;)t.appendChild(document.createElement("TH")),this.theadChildrenLength++;for(;this.theadChildrenLength>e+this.rowHeaderCount;)t.removeChild(t.lastChild),this.theadChildrenLength--}var r=this.THEAD.childNodes.length;if(r>this.columnHeaders.length)for(var i=this.columnHeaders.length;i<r;i++)this.THEAD.removeChild(this.THEAD.lastChild)}else t&&l(t)},getTrForColumnHeaders:function(e){return this.THEAD.childNodes[e]},renderColumnHeader:function(e,t,n){return n.className="",n.removeAttribute("style"),this.columnHeaders[e](t,n,e)},adjustColumns:function(e,t){for(var n=e.childNodes.length;n<t;){var o=document.createElement("TD");e.appendChild(o),n++}for(;n>t;)e.removeChild(e.lastChild),n--},removeRedundantColumns:function(e){for(;this.wtTable.tbodyChildrenLength>e;)this.TBODY.removeChild(this.TBODY.lastChild),this.wtTable.tbodyChildrenLength--}},{}),window.WalkontableTableRenderer=p},{"helpers/dom/element":47}],23:[function(e,t,n){"use strict";Object.defineProperties(n,{WalkontableViewport:{get:function(){return b}},__esModule:{value:!0}});var o,r,i,s,a,l,u=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,c=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),d=c.getScrollbarWidth,h=(c.getScrollTop,c.getStyle),f=c.offset,p=c.outerHeight,m=c.outerWidth,g=(i=e("helpers/object"),i&&i.__esModule&&i||{default:i}).objectEach,w=(s=e("eventManager"),s&&s.__esModule&&s||{default:s}).EventManager,v=(a=e("calculator/viewportColumns"),a&&a.__esModule&&a||{default:a}).WalkontableViewportColumnsCalculator,y=(l=e("calculator/viewportRows"),l&&l.__esModule&&l||{default:l}).WalkontableViewportRowsCalculator,b=function(e){var t=this;this.wot=e,this.instance=this.wot,this.oversizedRows=[],this.oversizedColumnHeaders=[],this.hasOversizedColumnHeadersMarked={},this.clientHeight=0,this.containerWidth=NaN,this.rowHeaderWidth=NaN,this.rowsVisibleCalculator=null,this.columnsVisibleCalculator=null,this.eventManager=new w(this.wot),this.eventManager.addEventListener(window,"resize",function(){t.clientHeight=t.getWorkspaceHeight()})};$traceurRuntime.createClass(b,{getWorkspaceHeight:function(){var e,t=this.instance.wtOverlays.topOverlay.trimmingContainer,n=0;return t===window?n=document.documentElement.clientHeight:(e=p(t),n=e>0&&t.clientHeight>0?t.clientHeight:1/0),n},getWorkspaceWidth:function(){var e,t,n=this.wot.getSetting("totalColumns"),o=this.instance.wtOverlays.leftOverlay.trimmingContainer,r=this.wot.getSetting("stretchH"),i=document.documentElement.offsetWidth,s=this.wot.getSetting("preventOverflow");return s?m(this.instance.wtTable.wtRootElement):(e=u.freezeOverlays?Math.min(i-this.getWorkspaceOffset().left,i):Math.min(this.getContainerFillWidth(),i-this.getWorkspaceOffset().left,i),o===window&&n>0&&this.sumColumnWidths(0,n-1)>e?document.documentElement.clientWidth:o!==window&&(t=h(this.instance.wtOverlays.leftOverlay.trimmingContainer,"overflow"),"scroll"==t||"hidden"==t||"auto"==t)?Math.max(e,o.clientWidth):"none"!==r&&r?e:Math.max(e,m(this.instance.wtTable.TABLE)))},hasVerticalScroll:function(){return this.getWorkspaceActualHeight()>this.getWorkspaceHeight()},hasHorizontalScroll:function(){return this.getWorkspaceActualWidth()>this.getWorkspaceWidth()},sumColumnWidths:function(e,t){for(var n=0;e<t;)n+=this.wot.wtTable.getColumnWidth(e),e++;return n},getContainerFillWidth:function(){if(this.containerWidth)return this.containerWidth;var e,t,n=this.instance.wtTable.holder;return t=document.createElement("div"),t.style.width="100%",t.style.height="1px",n.appendChild(t),e=t.offsetWidth,this.containerWidth=e,n.removeChild(t),e},getWorkspaceOffset:function(){return f(this.wot.wtTable.TABLE)},getWorkspaceActualHeight:function(){return p(this.wot.wtTable.TABLE)},getWorkspaceActualWidth:function(){return m(this.wot.wtTable.TABLE)||m(this.wot.wtTable.TBODY)||m(this.wot.wtTable.THEAD)},getColumnHeaderHeight:function(){return isNaN(this.columnHeaderHeight)&&(this.columnHeaderHeight=p(this.wot.wtTable.THEAD)),this.columnHeaderHeight},getViewportHeight:function(){var e,t=this.getWorkspaceHeight();return t===1/0?t:(e=this.getColumnHeaderHeight(),e>0&&(t-=e),t)},getRowHeaderWidth:function(){var e=this.instance.getSetting("rowHeaderWidth"),t=this.instance.getSetting("rowHeaders");if(e){this.rowHeaderWidth=0;for(var n=0,o=t.length;n<o;n++)this.rowHeaderWidth+=e[n]||e}if(this.wot.cloneSource)return this.wot.cloneSource.wtViewport.getRowHeaderWidth();if(isNaN(this.rowHeaderWidth))if(t.length){var r=this.instance.wtTable.TABLE.querySelector("TH");this.rowHeaderWidth=0;for(var i=0,s=t.length;i<s;i++)r?(this.rowHeaderWidth+=m(r),r=r.nextSibling):this.rowHeaderWidth+=50}else this.rowHeaderWidth=0;return this.rowHeaderWidth=this.instance.getSetting("onModifyRowHeaderWidth",this.rowHeaderWidth)||this.rowHeaderWidth,this.rowHeaderWidth},getViewportWidth:function(){var e,t=this.getWorkspaceWidth();return t===1/0?t:(e=this.getRowHeaderWidth(),e>0?t-e:t)},createRowsCalculator:function(){var e,t,n,o,r,i,s,a=void 0!==arguments[0]&&arguments[0],l=this;return this.rowHeaderWidth=NaN,e=this.wot.wtSettings.settings.renderAllRows?1/0:this.getViewportHeight(),t=this.wot.wtOverlays.topOverlay.getScrollPosition()-this.wot.wtOverlays.topOverlay.getTableParentOffset(),t<0&&(t=0),n=this.wot.getSetting("fixedRowsTop"),r=this.wot.getSetting("fixedRowsBottom"),s=this.wot.getSetting("totalRows"),n&&(i=this.wot.wtOverlays.topOverlay.sumCellSizes(0,n),t+=i,e-=i),r&&this.wot.wtOverlays.bottomOverlay.clone&&(i=this.wot.wtOverlays.bottomOverlay.sumCellSizes(s-r,s),e-=i),o=this.wot.wtTable.holder.clientHeight===this.wot.wtTable.holder.offsetHeight?0:d(),new y(e,t,this.wot.getSetting("totalRows"),function(e){return l.wot.wtTable.getRowHeight(e)},a?null:this.wot.wtSettings.settings.viewportRowCalculatorOverride,a,o)},createColumnsCalculator:function(){var e,t,n=void 0!==arguments[0]&&arguments[0],o=this,r=this.getViewportWidth();if(this.columnHeaderHeight=NaN,e=this.wot.wtOverlays.leftOverlay.getScrollPosition()-this.wot.wtOverlays.leftOverlay.getTableParentOffset(),
e<0&&(e=0),t=this.wot.getSetting("fixedColumnsLeft")){var i=this.wot.wtOverlays.leftOverlay.sumCellSizes(0,t);e+=i,r-=i}return this.wot.wtTable.holder.clientWidth!==this.wot.wtTable.holder.offsetWidth&&(r-=d()),new v(r,e,this.wot.getSetting("totalColumns"),function(e){return o.wot.wtTable.getColumnWidth(e)},n?null:this.wot.wtSettings.settings.viewportColumnCalculatorOverride,n,this.wot.getSetting("stretchH"),function(e,t){return o.wot.getSetting("onBeforeStretchingColumnWidth",e,t)})},createRenderCalculators:function(){var e=void 0!==arguments[0]&&arguments[0];if(e){var t=this.createRowsCalculator(!0),n=this.createColumnsCalculator(!0);this.areAllProposedVisibleRowsAlreadyRendered(t)&&this.areAllProposedVisibleColumnsAlreadyRendered(n)||(e=!1)}return e||(this.rowsRenderCalculator=this.createRowsCalculator(),this.columnsRenderCalculator=this.createColumnsCalculator()),this.rowsVisibleCalculator=null,this.columnsVisibleCalculator=null,e},createVisibleCalculators:function(){this.rowsVisibleCalculator=this.createRowsCalculator(!0),this.columnsVisibleCalculator=this.createColumnsCalculator(!0)},areAllProposedVisibleRowsAlreadyRendered:function(e){return!!this.rowsVisibleCalculator&&(!(e.startRow<this.rowsRenderCalculator.startRow||e.startRow===this.rowsRenderCalculator.startRow&&e.startRow>0)&&!(e.endRow>this.rowsRenderCalculator.endRow||e.endRow===this.rowsRenderCalculator.endRow&&e.endRow<this.wot.getSetting("totalRows")-1))},areAllProposedVisibleColumnsAlreadyRendered:function(e){return!!this.columnsVisibleCalculator&&(!(e.startColumn<this.columnsRenderCalculator.startColumn||e.startColumn===this.columnsRenderCalculator.startColumn&&e.startColumn>0)&&!(e.endColumn>this.columnsRenderCalculator.endColumn||e.endColumn===this.columnsRenderCalculator.endColumn&&e.endColumn<this.wot.getSetting("totalColumns")-1))},resetHasOversizedColumnHeadersMarked:function(){g(this.hasOversizedColumnHeadersMarked,function(e,t,n){n[t]=void 0})}},{}),window.WalkontableViewport=b},{browser:24,"calculator/viewportColumns":4,"calculator/viewportRows":5,eventManager:42,"helpers/dom/element":47,"helpers/object":53}],24:[function(e,t,n){"use strict";function o(e,t){var n=new o.Core(e,t||{});return n.init(),n}var r,i,s,a,l,u,c,d,h,f,p,m,g,w,v,y,b,C,_,R,M,S,E,O;t.exports=o,o.utils={},r=e("shims/runtime"),r&&r.__esModule&&r||{default:r},i=e("es6collections"),i&&i.__esModule&&i||{default:i};var T=(s=e("pluginHooks"),s&&s.__esModule&&s||{default:s}).Hooks,k=(a=e("numbro"),a&&a.__esModule&&a||{default:a}).default,x=(l=e("moment"),l&&l.__esModule&&l||{default:l}).default;"object"==typeof window&&("undefined"==typeof window.numbro&&(window.numbro=k),"undefined"==typeof window.moment&&(window.moment=x)),o.hooks||(o.hooks=new T),o.utils.Hooks=T,u=e("core"),u&&u.__esModule&&u||{default:u},c=e("renderers/_cellDecorator"),c&&c.__esModule&&c||{default:c},d=e("cellTypes"),d&&d.__esModule&&d||{default:d},h=e("plugins/jqueryHandsontable"),h&&h.__esModule&&h||{default:h};var D=(f=e("helpers/array"),f&&f.__esModule&&f||{default:f}),H=(p=e("helpers/browser"),p&&p.__esModule&&p||{default:p}),A=(m=e("helpers/data"),m&&m.__esModule&&m||{default:m}),P=(g=e("helpers/date"),g&&g.__esModule&&g||{default:g}),N=(w=e("helpers/feature"),w&&w.__esModule&&w||{default:w}),L=(v=e("helpers/function"),v&&v.__esModule&&v||{default:v}),I=(y=e("helpers/mixed"),y&&y.__esModule&&y||{default:y}),W=(b=e("helpers/number"),b&&b.__esModule&&b||{default:b}),j=(C=e("helpers/object"),C&&C.__esModule&&C||{default:C}),V=(_=e("helpers/setting"),_&&_.__esModule&&_||{default:_}),B=(R=e("helpers/string"),R&&R.__esModule&&R||{default:R}),F=(M=e("helpers/unicode"),M&&M.__esModule&&M||{default:M}),z=(S=e("helpers/dom/element"),S&&S.__esModule&&S||{default:S}),Y=(E=e("helpers/dom/event"),E&&E.__esModule&&E||{default:E}),U=[D,H,A,P,N,L,I,W,j,V,B,F],G=[z,Y];o.buildDate="Tue Feb 14 2017 11:02:09 GMT+0100 (CET)",o.packageName="handsontable",o.version="0.31.0";var $="@@baseVersion";/^@@/.test($)||(o.baseVersion=$),o.plugins={};var K=(O=e("plugins"),O&&O.__esModule&&O||{default:O}).registerPlugin;o.plugins.registerPlugin=K,o.helper={},o.dom={},o.Dom=o.dom,D.arrayEach(U,function(e){D.arrayEach(Object.getOwnPropertyNames(e),function(t){"_"!==t.charAt(0)&&(o.helper[t]=e[t])})}),D.arrayEach(G,function(e){D.arrayEach(Object.getOwnPropertyNames(e),function(t){"_"!==t.charAt(0)&&(o.dom[t]=e[t])})})},{cellTypes:25,core:26,es6collections:"es6collections","helpers/array":43,"helpers/browser":44,"helpers/data":45,"helpers/date":46,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/feature":49,"helpers/function":50,"helpers/mixed":51,"helpers/number":52,"helpers/object":53,"helpers/setting":54,"helpers/string":55,"helpers/unicode":56,moment:"moment",numbro:"numbro",pluginHooks:60,plugins:61,"plugins/jqueryHandsontable":2,"renderers/_cellDecorator":118,"shims/runtime":125}],25:[function(e,t,n){"use strict";var o,r,i,s,a,l,u,c,d,h,f,p,m,g,w,v,y,b,C,_,R,M,S,E,O=(o=e("helpers/browser"),o&&o.__esModule&&o||{default:o}).isMobileBrowser,T=(r=e("editors"),r&&r.__esModule&&r||{default:r}).getEditorConstructor,k=(i=e("renderers"),i&&i.__esModule&&i||{default:i}).getRenderer,x=((s=e("editors/autocompleteEditor"),s&&s.__esModule&&s||{default:s}).AutocompleteEditor,(a=e("editors/checkboxEditor"),a&&a.__esModule&&a||{default:a}).CheckboxEditor,(l=e("editors/dateEditor"),l&&l.__esModule&&l||{default:l}).DateEditor,(u=e("editors/dropdownEditor"),u&&u.__esModule&&u||{default:u}).DropdownEditor,(c=e("editors/handsontableEditor"),c&&c.__esModule&&c||{default:c}).HandsontableEditor,(d=e("editors/mobileTextEditor"),d&&d.__esModule&&d||{default:d}).MobileTextEditor,(h=e("editors/numericEditor"),h&&h.__esModule&&h||{default:h}).NumericEditor,(f=e("editors/passwordEditor"),f&&f.__esModule&&f||{default:f}).PasswordEditor,(p=e("editors/selectEditor"),p&&p.__esModule&&p||{default:p}).SelectEditor,(m=e("editors/textEditor"),m&&m.__esModule&&m||{default:m}).TextEditor,(g=e("renderers/autocompleteRenderer"),g&&g.__esModule&&g||{default:g}).AutocompleteRenderer,(w=e("renderers/checkboxRenderer"),w&&w.__esModule&&w||{default:w}).CheckboxRenderer,(v=e("renderers/htmlRenderer"),v&&v.__esModule&&v||{default:v}).HtmlRenderer,(y=e("renderers/numericRenderer"),y&&y.__esModule&&y||{default:y}).NumericRenderer,(b=e("renderers/passwordRenderer"),b&&b.__esModule&&b||{default:b}).PasswordRenderer,(C=e("renderers/textRenderer"),C&&C.__esModule&&C||{default:C}).TextRenderer,(_=e("validators/autocompleteValidator"),_&&_.__esModule&&_||{default:_}).AutocompleteValidator,(R=e("validators/dateValidator"),R&&R.__esModule&&R||{default:R}).DateValidator,(M=e("validators/timeValidator"),M&&M.__esModule&&M||{default:M}).TimeValidator,(S=e("validators/numericValidator"),S&&S.__esModule&&S||{default:S}).NumericValidator,(E=e("browser"),E&&E.__esModule&&E||{default:E}).default);x.AutocompleteCell={editor:T("autocomplete"),renderer:k("autocomplete"),validator:x.AutocompleteValidator},x.CheckboxCell={editor:T("checkbox"),renderer:k("checkbox")},x.TextCell={editor:T(O()?"mobile":"text"),renderer:k("text")},x.NumericCell={editor:T("numeric"),renderer:k("numeric"),validator:x.NumericValidator,dataType:"number"},x.DateCell={editor:T("date"),validator:x.DateValidator,renderer:k("autocomplete")},x.TimeCell={editor:T("text"),validator:x.TimeValidator,renderer:k("text")},x.HandsontableCell={editor:T("handsontable"),renderer:k("autocomplete")},x.PasswordCell={editor:T("password"),renderer:k("password"),copyable:!1},x.DropdownCell={editor:T("dropdown"),renderer:k("autocomplete"),validator:x.AutocompleteValidator},x.cellTypes={text:x.TextCell,date:x.DateCell,time:x.TimeCell,numeric:x.NumericCell,checkbox:x.CheckboxCell,autocomplete:x.AutocompleteCell,handsontable:x.HandsontableCell,password:x.PasswordCell,dropdown:x.DropdownCell},x.cellLookup={validator:{numeric:x.NumericValidator,autocomplete:x.AutocompleteValidator}}},{browser:24,editors:30,"editors/autocompleteEditor":32,"editors/checkboxEditor":33,"editors/dateEditor":34,"editors/dropdownEditor":35,"editors/handsontableEditor":36,"editors/mobileTextEditor":37,"editors/numericEditor":38,"editors/passwordEditor":39,"editors/selectEditor":40,"editors/textEditor":41,"helpers/browser":44,renderers:117,"renderers/autocompleteRenderer":119,"renderers/checkboxRenderer":120,"renderers/htmlRenderer":121,"renderers/numericRenderer":122,"renderers/passwordRenderer":123,"renderers/textRenderer":124,"validators/autocompleteValidator":133,"validators/dateValidator":134,"validators/numericValidator":135,"validators/timeValidator":136}],26:[function(e,t,n){"use strict";var o,r,i,s,a,l,u,c,d,h,f,p,m,g,w,v,y,b,C,_,R,M,S,E=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,O=(r=e("numbro"),r&&r.__esModule&&r||{default:r}).default,T=(i=e("helpers/dom/element"),i&&i.__esModule&&i||{default:i}),k=T.addClass,x=T.empty,D=T.isChildOfWebComponentTable,H=T.removeClass,A=(s=e("helpers/setting"),s&&s.__esModule&&s||{default:s}).columnFactory,P=(a=e("helpers/function"),a&&a.__esModule&&a||{default:a}).isFunction,N=(l=e("helpers/mixed"),l&&l.__esModule&&l||{default:l}),L=N.isDefined,I=N.isUndefined,W=(u=e("helpers/browser"),u&&u.__esModule&&u||{default:u}).isMobileBrowser,j=(c=e("dataMap"),c&&c.__esModule&&c||{default:c}).DataMap,V=(d=e("editorManager"),d&&d.__esModule&&d||{default:d}).EditorManager,B=(h=e("eventManager"),h&&h.__esModule&&h||{default:h}).eventManager,F=(f=e("helpers/object"),f&&f.__esModule&&f||{default:f}),z=F.deepClone,Y=F.duckSchema,U=F.extend,G=F.isObject,$=F.isObjectEquals,K=F.deepObjectSize,X=(p=e("helpers/array"),p&&p.__esModule&&p||{default:p}),q=X.arrayFlatten,Z=X.arrayMap,J=(m=e("plugins"),m&&m.__esModule&&m||{default:m}).getPlugin,Q=(g=e("renderers"),g&&g.__esModule&&g||{default:g}).getRenderer,ee=(w=e("helpers/string"),w&&w.__esModule&&w||{default:w}).randomString,te=(v=e("helpers/number"),v&&v.__esModule&&v||{default:v}).rangeEach,ne=(y=e("tableView"),y&&y.__esModule&&y||{default:y}).TableView,oe=(b=e("dataSource"),b&&b.__esModule&&b||{default:b}).DataSource,re=(C=e("helpers/data"),C&&C.__esModule&&C||{default:C}),ie=re.translateRowsToColumns,se=re.cellMethodLookupFactory,ae=re.spreadsheetColumnLabel,le=(_=e("utils/recordTranslator"),_&&_.__esModule&&_||{default:_}).getTranslator,ue=(R=e("3rdparty/walkontable/src/cell/coords"),R&&R.__esModule&&R||{default:R}).WalkontableCellCoords,ce=(M=e("3rdparty/walkontable/src/cell/range"),M&&M.__esModule&&M||{default:M}).WalkontableCellRange,de=(S=e("3rdparty/walkontable/src/calculator/viewportColumns"),S&&S.__esModule&&S||{default:S}).WalkontableViewportColumnsCalculator;E.activeGuid=null,E.Core=function(e,t){function n(){var e=!1;return{validatorsInQueue:0,valid:!0,addValidatorToQueue:function(){this.validatorsInQueue++,e=!1},removeValidatorFormQueue:function(){this.validatorsInQueue=this.validatorsInQueue-1<0?0:this.validatorsInQueue-1,this.checkIfQueueIsEmpty()},onQueueEmpty:function(e){},checkIfQueueIsEmpty:function(){0==this.validatorsInQueue&&0==e&&(e=!0,this.onQueueEmpty(this.valid))}}}function o(e,t,o){function r(){var n;e.length&&(n=E.hooks.run(p,"beforeChange",e,t),P(n)?console.warn("Your beforeChange callback returns a function. It's not supported since Handsontable 0.12.1 (and the returned function will not be executed)."):n===!1&&e.splice(0,e.length)),o()}var i=new n;i.onQueueEmpty=r;for(var s=e.length-1;s>=0;s--)if(null===e[s])e.splice(s,1);else{var a=e[s][0],l=u.propToCol(e[s][1]),c=p.getCellMeta(a,l);if("numeric"===c.type&&"string"==typeof e[s][3]&&e[s][3].length>0&&(/^-?[\d\s]*(\.|\,)?\d*$/.test(e[s][3])||c.format)){var d=e[s][3].length;I(c.language)?O.culture("en-US"):e[s][3].indexOf(".")===d-3&&e[s][3].indexOf(",")===-1?O.culture("en-US"):O.culture(c.language);O.cultureData(O.culture()).delimiters;O.validate(e[s][3])&&!isNaN(e[s][3])?e[s][3]=parseFloat(e[s][3]):e[s][3]=O().unformat(e[s][3])||e[s][3]}p.getCellValidator(c)&&(i.addValidatorToQueue(),p.validateCell(e[s][3],c,function(t,n){return function(o){if("boolean"!=typeof o)throw new Error("Validation error: result is not boolean");if(o===!1&&n.allowInvalid===!1){e.splice(t,1),n.valid=!0;var r=p.getCell(n.row,n.col);H(r,p.getSettings().invalidCellClassName),--t}i.removeValidatorFormQueue()}}(s,c),t))}i.checkIfQueueIsEmpty()}function r(e,t){var n=e.length-1;if(!(n<0)){for(;0<=n;n--){var o=!1;if(null!==e[n]){if(null!=e[n][2]||null!=e[n][3]){if(l.settings.allowInsertRow)for(;e[n][0]>p.countRows()-1;){var r=u.createRow(void 0,void 0,t);if(0===r){o=!0;break}}if(!o){if("array"===p.dataType&&(!l.settings.columns||0===l.settings.columns.length)&&l.settings.allowInsertColumn)for(;u.propToCol(e[n][1])>p.countCols()-1;)u.createCol(void 0,void 0,t);u.set(e[n][0],e[n][1],e[n][3])}}}else e.splice(n,1)}p.forceFullRender=!0,d.adjustRowsAndCols(),E.hooks.run(p,"beforeChangeRender",e,t),h.refreshBorders(null,!0),p.view.wt.wtOverlays.adjustElementsSize(),E.hooks.run(p,"afterChange",e,t||"edit");var i=p.getActiveEditor();i&&L(i.refreshValue)&&i.refreshValue()}}function i(e,t,n){return"object"==typeof e?e:[[e,t,n]]}function s(e){if(e.hasOwnProperty("type")){var t,n={};if("object"==typeof e.type)t=e.type;else if("string"==typeof e.type&&(t=E.cellTypes[e.type],void 0===t))throw new Error('You declared cell type "'+e.type+'" as a string that is not mapped to a known object. Cell type must be an object or a string mapped to an object in Handsontable.cellTypes');for(var o in t)t.hasOwnProperty(o)&&!e.hasOwnProperty(o)&&(n[o]=t[o]);return n}}function a(){throw new Error("This method cannot be called because this Handsontable instance has been destroyed")}var l,u,c,d,h,f,p=this,m=function(){},g=B(p),w=le(p);U(m.prototype,he.prototype),U(m.prototype,t),U(m.prototype,s(t)),this.rootElement=e,this.isHotTableEnv=D(this.rootElement),E.eventManager.isHotTableEnv=this.isHotTableEnv,this.container=document.createElement("DIV"),this.renderCall=!1,e.insertBefore(this.container,e.firstChild),this.guid="ht_"+ee(),c=new oe(p),this.rootElement.id&&"ht_"!==this.rootElement.id.substring(0,3)||(this.rootElement.id=this.guid),l={cellSettings:[],columnSettings:[],columnsSettingConflicts:["data","width"],settings:new m,selRange:null,isPopulated:null,scrollable:null,firstRun:!0},d={alter:function(e,t,n,o,r){function i(e,t,n,o){var r=function(){var e;return"array"===o?e=[]:"object"===o&&(e={}),e},i=Z(new Array(n),function(){return r()});i.unshift(t,0),e.splice.apply(e,i)}var s;switch(n=n||1,e){case"insert_row":var a=p.countSourceRows();if(p.getSettings().maxRows===a)return;t=L(t)?t:a,s=u.createRow(t,n,o),i(l.cellSettings,t,n,"array"),s&&(h.isSelected()&&l.selRange.from.row>=t?(l.selRange.from.row=l.selRange.from.row+s,h.transformEnd(s,0)):h.refreshBorders());break;case"insert_col":s=u.createCol(t,n,o);for(var c=0,f=p.countSourceRows();c<f;c++)l.cellSettings[c]&&i(l.cellSettings[c],t,n);if(s){if(Array.isArray(p.getSettings().colHeaders)){var m=[t,0];m.length+=s,Array.prototype.splice.apply(p.getSettings().colHeaders,m)}h.isSelected()&&l.selRange.from.col>=t?(l.selRange.from.col=l.selRange.from.col+s,h.transformEnd(0,s)):h.refreshBorders()}break;case"remove_row":u.removeRow(t,n,o),l.cellSettings.splice(t,n);var g=p.countRows(),v=p.getSettings().fixedRowsTop;v>=t+1&&(p.getSettings().fixedRowsTop-=Math.min(n,v-t));var y=p.getSettings().fixedRowsBottom;y&&t>=g-y&&(p.getSettings().fixedRowsBottom-=Math.min(n,y)),d.adjustRowsAndCols(),h.refreshBorders();break;case"remove_col":var b=w.toPhysicalColumn(t);u.removeCol(t,n,o);for(var C=0,_=p.countSourceRows();C<_;C++)l.cellSettings[C]&&l.cellSettings[C].splice(b,n);var R=p.getSettings().fixedColumnsLeft;R>=t+1&&(p.getSettings().fixedColumnsLeft-=Math.min(n,R-t)),Array.isArray(p.getSettings().colHeaders)&&("undefined"==typeof b&&(b=-1),p.getSettings().colHeaders.splice(b,n)),d.adjustRowsAndCols(),h.refreshBorders();break;default:throw new Error('There is no such action "'+e+'"')}r||d.adjustRowsAndCols()},adjustRowsAndCols:function(){if(l.settings.minRows){var e=p.countRows();if(e<l.settings.minRows)for(var t=0,n=l.settings.minRows;t<n-e;t++)u.createRow(p.countRows(),1,"auto")}if(l.settings.minSpareRows){var o=p.countEmptyRows(!0);if(o<l.settings.minSpareRows)for(;o<l.settings.minSpareRows&&p.countSourceRows()<l.settings.maxRows;o++)u.createRow(p.countRows(),1,"auto")}var r;if((l.settings.minCols||l.settings.minSpareCols)&&(r=p.countEmptyCols(!0)),l.settings.minCols&&!l.settings.columns&&p.countCols()<l.settings.minCols)for(;p.countCols()<l.settings.minCols;r++)u.createCol(p.countCols(),1,"auto");if(l.settings.minSpareCols&&!l.settings.columns&&"array"===p.dataType&&r<l.settings.minSpareCols)for(;r<l.settings.minSpareCols&&p.countCols()<l.settings.maxCols;r++)u.createCol(p.countCols(),1,"auto");var i=p.countRows(),s=p.countCols();if(0!==i&&0!==s||h.deselect(),h.isSelected()){var a=!1,c=l.selRange.from.row,d=l.selRange.from.col,f=l.selRange.to.row,m=l.selRange.to.col;c>i-1?(c=i-1,a=!0,f>c&&(f=c)):f>i-1&&(f=i-1,a=!0,c>f&&(c=f)),d>s-1?(d=s-1,a=!0,m>d&&(m=d)):m>s-1&&(m=s-1,a=!0,d>m&&(d=m)),a&&p.selectCell(c,d,f,m)}p.view&&p.view.wt.wtOverlays.adjustElementsSize()},populateFromArray:function(e,t,n,o,r,i,s){var a,u,c,d,h=[],f={};if(u=t.length,0===u)return!1;var m,g,w,v;({row:null===n?null:n.row,col:null===n?null:n.col});switch(r){case"shift_down":for(m=n?n.col-e.col+1:0,g=n?n.row-e.row+1:0,t=ie(t),c=0,d=t.length,w=Math.max(d,m);c<w;c++)if(c<d){for(a=0,u=t[c].length;a<g-u;a++)t[c].push(t[c][a%u]);t[c].unshift(e.col+c,e.row,0),p.spliceCol.apply(p,t[c])}else t[c%d][0]=e.col+c,p.spliceCol.apply(p,t[c%d]);break;case"shift_right":for(m=n?n.col-e.col+1:0,g=n?n.row-e.row+1:0,a=0,u=t.length,v=Math.max(u,g);a<v;a++)if(a<u){for(c=0,d=t[a].length;c<m-d;c++)t[a].push(t[a][c%d]);t[a].unshift(e.row+a,e.col,0),p.spliceRow.apply(p,t[a])}else t[a%u][0]=e.row+a,p.spliceRow.apply(p,t[a%u]);break;case"overwrite":default:f.row=e.row,f.col=e.col;var y,b={row:n&&e?n.row-e.row+1:1,col:n&&e?n.col-e.col+1:1},C=0,_=0,R=!0,M=function(e){var n=void 0!==arguments[1]?arguments[1]:null,o=t[e%t.length];return null!==n?o[n%o.length]:o},S=t.length,E=n?n.row-e.row+1:0;for(u=n?E:Math.max(S,E),a=0;a<u&&!(n&&f.row>n.row&&E>S||!l.settings.allowInsertRow&&f.row>p.countRows()-1||f.row>=l.settings.maxRows);a++){var O=a-C,T=M(O).length,k=n?n.col-e.col+1:0;if(d=n?k:Math.max(T,k),f.col=e.col,y=p.getCellMeta(f.row,f.col),"CopyPaste.paste"!==o&&"Autofill.autofill"!==o||!y.skipRowOnPaste){for(_=0,c=0;c<d&&!(n&&f.col>n.col&&k>T||!l.settings.allowInsertColumn&&f.col>p.countCols()-1||f.col>=l.settings.maxCols);c++)if(y=p.getCellMeta(f.row,f.col),"CopyPaste.paste"!==o&&"Autofill.fill"!==o||!y.skipColumnOnPaste)if(y.readOnly)f.col++;else{var x=c-_,D=M(O,x),H=p.getDataAtCell(f.row,f.col),A={row:O,col:x};if("Autofill.fill"===o){var P=p.runHooks("beforeAutofillInsidePopulate",A,i,t,s,{},b);P&&(D=I(P.value)?D:P.value)}if(null!==D&&"object"==typeof D)if(null===H||"object"!=typeof H)R=!1;else{var N=Y(H[0]||H),L=Y(D[0]||D);$(N,L)?D=z(D):R=!1}else null!==H&&"object"==typeof H&&(R=!1);R&&h.push([f.row,f.col,D]),R=!0,f.col++}else _++,f.col++,d++;f.row++}else C++,f.row++,u++}p.setDataAtCell(h,null,null,o||"populateFromArray")}}},this.selection=h={inProgress:!1,selectedHeader:{cols:!1,rows:!1},setSelectedHeaders:function(){var e=void 0!==arguments[0]&&arguments[0],t=void 0!==arguments[1]&&arguments[1],n=void 0!==arguments[2]&&arguments[2];p.selection.selectedHeader.rows=e,p.selection.selectedHeader.cols=t,p.selection.selectedHeader.corner=n},begin:function(){p.selection.inProgress=!0},finish:function(){var e=p.getSelected();E.hooks.run(p,"afterSelectionEnd",e[0],e[1],e[2],e[3]),E.hooks.run(p,"afterSelectionEndByProp",e[0],p.colToProp(e[1]),e[2],p.colToProp(e[3])),p.selection.inProgress=!1},isInProgress:function(){return p.selection.inProgress},setRangeStart:function(e,t){E.hooks.run(p,"beforeSetRangeStart",e),l.selRange=new ce(e,e,e),h.setRangeEnd(e,null,t)},setRangeStartOnly:function(e){E.hooks.run(p,"beforeSetRangeStartOnly",e),l.selRange=new ce(e,e,e)},setRangeEnd:function(e,t,n){if(null!==l.selRange){var o,r=!1,i=!0,s=p.view.wt.wtTable.getFirstVisibleRow(),a=p.view.wt.wtTable.getFirstVisibleColumn(),c={row:null,col:null};E.hooks.run(p,"beforeSetRangeEnd",e),p.selection.begin(),c.row=e.row<0?s:e.row,c.col=e.col<0?a:e.col,l.selRange.to=new ue(c.row,c.col),l.settings.multiSelect||(l.selRange.from=e),p.view.wt.selections.current.clear(),o=p.getCellMeta(l.selRange.highlight.row,l.selRange.highlight.col).disableVisualSelection,"string"==typeof o&&(o=[o]),(o===!1||Array.isArray(o)&&o.indexOf("current")===-1)&&p.view.wt.selections.current.add(l.selRange.highlight),p.view.wt.selections.area.clear(),(o===!1||Array.isArray(o)&&o.indexOf("area")===-1)&&h.isMultiple()&&(p.view.wt.selections.area.add(l.selRange.from),p.view.wt.selections.area.add(l.selRange.to)),(l.settings.currentHeaderClassName||l.settings.currentRowClassName||l.settings.currentColClassName)&&(p.view.wt.selections.highlight.clear(),p.view.wt.selections.highlight.add(l.selRange.from),p.view.wt.selections.highlight.add(l.selRange.to)),E.hooks.run(p,"afterSelection",l.selRange.from.row,l.selRange.from.col,l.selRange.to.row,l.selRange.to.col),E.hooks.run(p,"afterSelectionByProp",l.selRange.from.row,u.colToProp(l.selRange.from.col),l.selRange.to.row,u.colToProp(l.selRange.to.col)),(0===l.selRange.from.row&&l.selRange.to.row===p.countRows()-1&&p.countRows()>1||0===l.selRange.from.col&&l.selRange.to.col===p.countCols()-1&&p.countCols()>1)&&(r=!0),(e.row<0||e.col<0)&&(i=!1),t!==!1&&!r&&i&&(l.selRange.from&&!h.isMultiple()?p.view.scrollViewport(l.selRange.from):p.view.scrollViewport(e)),h.refreshBorders(null,n)}},refreshBorders:function(e,t){t||f.destroyEditor(e),p.view.render(),h.isSelected()&&!t&&f.prepareEditor()},isMultiple:function(){var e=!(l.selRange.to.col===l.selRange.from.col&&l.selRange.to.row===l.selRange.from.row),t=E.hooks.run(p,"afterIsMultipleSelection",e);if(e)return t},transformStart:function(e,t,n,o){var r,i,s,a,u=new ue(e,t),c=0,d=0;p.runHooks("modifyTransformStart",u),r=p.countRows(),i=p.countCols(),a=p.getSettings().fixedRowsBottom,l.selRange.highlight.row+e>r-1?n&&l.settings.minSpareRows>0&&!(a&&l.selRange.highlight.row>=r-a-1)?(p.alter("insert_row",r),r=p.countRows()):l.settings.autoWrapCol&&(u.row=1-r,u.col=l.selRange.highlight.col+u.col==i-1?1-i:1):l.settings.autoWrapCol&&l.selRange.highlight.row+u.row<0&&l.selRange.highlight.col+u.col>=0&&(u.row=r-1,u.col=l.selRange.highlight.col+u.col==0?i-1:-1),l.selRange.highlight.col+u.col>i-1?n&&l.settings.minSpareCols>0?(p.alter("insert_col",i),i=p.countCols()):l.settings.autoWrapRow&&(u.row=l.selRange.highlight.row+u.row==r-1?1-r:1,u.col=1-i):l.settings.autoWrapRow&&l.selRange.highlight.col+u.col<0&&l.selRange.highlight.row+u.row>=0&&(u.row=l.selRange.highlight.row+u.row==0?r-1:-1,u.col=i-1),s=new ue(l.selRange.highlight.row+u.row,l.selRange.highlight.col+u.col),s.row<0?(c=-1,s.row=0):s.row>0&&s.row>=r&&(c=1,s.row=r-1),s.col<0?(d=-1,s.col=0):s.col>0&&s.col>=i&&(d=1,s.col=i-1),p.runHooks("afterModifyTransformStart",s,c,d),h.setRangeStart(s,o)},transformEnd:function(e,t){var n,o,r,i=new ue(e,t),s=0,a=0;p.runHooks("modifyTransformEnd",i),n=p.countRows(),o=p.countCols(),r=new ue(l.selRange.to.row+i.row,l.selRange.to.col+i.col),r.row<0?(s=-1,r.row=0):r.row>0&&r.row>=n&&(s=1,r.row=n-1),r.col<0?(a=-1,r.col=0):r.col>0&&r.col>=o&&(a=1,r.col=o-1),p.runHooks("afterModifyTransformEnd",r,s,a),h.setRangeEnd(r,!0)},isSelected:function(){return null!==l.selRange},inInSelection:function(e){return!!h.isSelected()&&l.selRange.includes(e)},deselect:function(){h.isSelected()&&(p.selection.inProgress=!1,l.selRange=null,p.view.wt.selections.current.clear(),p.view.wt.selections.area.clear(),(l.settings.currentHeaderClassName||l.settings.currentRowClassName||l.settings.currentColClassName)&&p.view.wt.selections.highlight.clear(),f.destroyEditor(),h.refreshBorders(),H(p.rootElement,["ht__selection--rows","ht__selection--columns"]),E.hooks.run(p,"afterDeselect"))},selectAll:function(){l.settings.multiSelect&&(h.setRangeStart(new ue(0,0)),h.setRangeEnd(new ue(p.countRows()-1,p.countCols()-1),!1))},empty:function(){if(h.isSelected()){var e,t,n=l.selRange.getTopLeftCorner(),o=l.selRange.getBottomRightCorner(),r=[];for(e=n.row;e<=o.row;e++)for(t=n.col;t<=o.col;t++)p.getCellMeta(e,t).readOnly||r.push([e,t,""]);p.setDataAtCell(r)}}},this.init=function(){c.setData(l.settings.data),E.hooks.run(p,"beforeInit"),W()&&k(p.rootElement,"mobile"),this.updateSettings(l.settings,!0),this.view=new ne(this),f=new V(p,l,h,u),this.forceFullRender=!0,E.hooks.run(p,"init"),this.view.render(),"object"==typeof l.firstRun&&(E.hooks.run(p,"afterChange",l.firstRun[0],l.firstRun[1]),l.firstRun=!1),E.hooks.run(p,"afterInit")},this.validateCell=function(e,t,n,o){function r(e){var o=t.visualCol,r=t.visualRow,i=p.getCell(r,o,!0);i&&"TH"!=i.nodeName&&p.view.wt.wtSettings.settings.cellRenderer(r,o,i),n(e)}var i=p.getCellValidator(t);"[object RegExp]"===Object.prototype.toString.call(i)&&(i=function(e){return function(t,n){n(e.test(t))}}(i)),P(i)?(e=E.hooks.run(p,"beforeValidate",e,t.visualRow,t.prop,o),p._registerTimeout(setTimeout(function(){i.call(t,e,function(n){n=E.hooks.run(p,"afterValidate",n,e,t.visualRow,t.prop,o),t.valid=n,r(n),E.hooks.run(p,"postAfterValidate",n,e,t.visualRow,t.prop,o)})},0))):p._registerTimeout(setTimeout(function(){t.valid=!0,r(t.valid)},0))},this.setDataAtCell=function(e,t,n,s){var a,l,d,h=i(e,t,n),f=[];for(a=0,l=h.length;a<l;a++){if("object"!=typeof h[a])throw new Error("Method `setDataAtCell` accepts row number or changes array of arrays as its first parameter");if("number"!=typeof h[a][1])throw new Error("Method `setDataAtCell` accepts row and column number as its parameters. If you want to use object property name, use method `setDataAtRowProp`");d=u.colToProp(h[a][1]),f.push([h[a][0],d,c.getAtCell(w.toPhysicalRow(h[a][0]),h[a][1]),h[a][2]])}s||"object"!=typeof e||(s=t),p.runHooks("afterSetDataAtCell",f,s),o(f,s,function(){r(f,s)})},this.setDataAtRowProp=function(e,t,n,s){var a,l,u=i(e,t,n),d=[];for(a=0,l=u.length;a<l;a++)d.push([u[a][0],u[a][1],c.getAtCell(w.toPhysicalRow(u[a][0]),u[a][1]),u[a][2]]);s||"object"!=typeof e||(s=t),p.runHooks("afterSetDataAtRowProp",d,s),o(d,s,function(){r(d,s)})},this.listen=function(){E.activeGuid=p.guid},this.unlisten=function(){E.activeGuid=null},this.isListening=function(){return E.activeGuid===p.guid},this.destroyEditor=function(e){h.refreshBorders(e)},this.populateFromArray=function(e,t,n,o,r,i,s,a,l){var u;if("object"!=typeof n||"object"!=typeof n[0])throw new Error("populateFromArray parameter `input` must be an array of arrays");return u="number"==typeof o?new ue(o,r):null,d.populateFromArray(new ue(e,t),n,u,i,s,a,l)},this.spliceCol=function(e,t,n){return u.spliceCol.apply(u,arguments)},this.spliceRow=function(e,t,n){return u.spliceRow.apply(u,arguments)},this.getSelected=function(){if(h.isSelected())return[l.selRange.from.row,l.selRange.from.col,l.selRange.to.row,l.selRange.to.col]},this.getSelectedRange=function(){if(h.isSelected())return l.selRange},this.render=function(){p.view&&(p.renderCall=!0,p.forceFullRender=!0,h.refreshBorders(null,!0))},this.loadData=function(e){function t(){l.cellSettings.length=0}if(Array.isArray(l.settings.dataSchema)?p.dataType="array":P(l.settings.dataSchema)?p.dataType="function":p.dataType="object",u&&u.destroy(),u=new j(p,l,m),"object"==typeof e&&null!==e)e.push&&e.splice||(e=[e]);else{if(null!==e)throw new Error("loadData only accepts array of objects or array of arrays ("+typeof e+" given)");e=[];var n,o=0,r=0,i=u.getSchema();for(o=0,r=l.settings.startRows;o<r;o++)if("object"!==p.dataType&&"function"!==p.dataType||!l.settings.dataSchema)if("array"===p.dataType)n=z(i[0]),e.push(n);else{n=[];for(var s=0,a=l.settings.startCols;s<a;s++)n.push(null);e.push(n)}else n=z(i),e.push(n)}l.isPopulated=!1,m.prototype.data=e,Array.isArray(e[0])&&(p.dataType="array"),u.dataSource=e,c.data=e,c.dataType=p.dataType,c.colToProp=u.colToProp.bind(u),c.propToCol=u.propToCol.bind(u),t(),d.adjustRowsAndCols(),E.hooks.run(p,"afterLoadData",l.firstRun),l.firstRun?l.firstRun=[null,"loadData"]:(E.hooks.run(p,"afterChange",null,"loadData"),p.render()),l.isPopulated=!0},this.getData=function(e,t,n,o){return I(e)?u.getAll():u.getRange(new ue(e,t),new ue(n,o),u.DESTINATION_RENDERER)},this.getCopyableText=function(e,t,n,o){return u.getCopyableText(new ue(e,t),new ue(n,o))},this.getCopyableData=function(e,t){return u.getCopyable(e,u.colToProp(t))},this.getSchema=function(){return u.getSchema()},this.updateSettings=function(e,t){var n,o,r,i=!1;if(L(e.rows))throw new Error('"rows" setting is no longer supported. do you mean startRows, minRows or maxRows?');if(L(e.cols))throw new Error('"cols" setting is no longer supported. do you mean startCols, minCols or maxCols?');for(n in e)"data"!==n&&(E.hooks.getRegistered().indexOf(n)>-1?(P(e[n])||Array.isArray(e[n]))&&p.addHook(n,e[n]):!t&&e.hasOwnProperty(n)&&(m.prototype[n]=e[n]));if(void 0===e.data&&void 0===l.settings.data?p.loadData(null):void 0!==e.data?p.loadData(e.data):void 0!==e.columns&&u.createMap(),r=p.countCols(),e.columns&&P(e.columns)&&(r=p.countSourceCols(),i=!0),void 0===e.cell&&void 0===e.cells&&void 0===e.columns||(l.cellSettings.length=0),r>0){var a,c;for(n=0,o=0;n<r;n++)i&&!e.columns(n)||(l.columnSettings[o]=A(m,l.columnsSettingConflicts),a=l.columnSettings[o].prototype,m.prototype.columns&&(c=i?m.prototype.columns(n):m.prototype.columns[o],c&&(U(a,c),U(a,s(c)))),o++)}if(L(e.cell))for(var f in e.cell)if(e.cell.hasOwnProperty(f)){var g=e.cell[f];p.setCellMetaObject(g.row,g.col,g)}E.hooks.run(p,"afterCellMetaReset"),L(e.className)&&(m.prototype.className&&H(p.rootElement,m.prototype.className),e.className&&k(p.rootElement,e.className));var w=p.rootElement.style.height;""!==w&&(w=parseInt(p.rootElement.style.height,10));var v=e.height;if(P(v)&&(v=v()),t){var y=p.rootElement.getAttribute("style");y&&p.rootElement.setAttribute("data-initialstyle",p.rootElement.getAttribute("style"))}if(null===v){var b=p.rootElement.getAttribute("data-initialstyle");b&&(b.indexOf("height")>-1||b.indexOf("overflow")>-1)?p.rootElement.setAttribute("style",b):(p.rootElement.style.height="",p.rootElement.style.overflow="")}else void 0!==v&&(p.rootElement.style.height=v+"px",p.rootElement.style.overflow="hidden");if("undefined"!=typeof e.width){var C=e.width;P(C)&&(C=C()),p.rootElement.style.width=C+"px"}t||(u.clearLengthCache(),p.view&&p.view.wt.wtViewport.resetHasOversizedColumnHeadersMarked(),E.hooks.run(p,"afterUpdateSettings")),d.adjustRowsAndCols(),p.view&&!l.firstRun&&(p.forceFullRender=!0,h.refreshBorders(null,!0)),t||!p.view||""!==w&&""!==v&&void 0!==v||w===v||p.view.wt.wtOverlays.updateMainScrollableElements()},this.getValue=function(){var e=p.getSelected();if(m.prototype.getValue){if(P(m.prototype.getValue))return m.prototype.getValue.call(p);if(e)return p.getData()[e[0]][m.prototype.getValue]}else if(e)return p.getDataAtCell(e[0],e[1])},this.getSettings=function(){return l.settings},this.clear=function(){h.selectAll(),h.empty()},this.alter=function(e,t,n,o,r){d.alter(e,t,n,o,r)},this.getCell=function(e,t,n){return p.view.getCellAtCoords(new ue(e,t),n)},this.getCoords=function(e){return this.view.wt.wtTable.getCoords.call(this.view.wt.wtTable,e)},this.colToProp=function(e){return u.colToProp(e)},this.propToCol=function(e){return u.propToCol(e)},this.toVisualRow=function(e){return w.toVisualRow(e)},this.toVisualColumn=function(e){return w.toVisualColumn(e)},this.toPhysicalRow=function(e){return w.toPhysicalRow(e)},this.toPhysicalColumn=function(e){return w.toPhysicalColumn(e)},this.getDataAtCell=function(e,t){return u.get(e,u.colToProp(t))},this.getDataAtRowProp=function(e,t){return u.get(e,t)},this.getDataAtCol=function(e){var t=[];return t.concat.apply(t,u.getRange(new ue(0,e),new ue(l.settings.data.length-1,e),u.DESTINATION_RENDERER))},this.getDataAtProp=function(e){var t,n=[];return t=u.getRange(new ue(0,u.propToCol(e)),new ue(l.settings.data.length-1,u.propToCol(e)),u.DESTINATION_RENDERER),
n.concat.apply(n,t)},this.getSourceData=function(e,t,n,o){var r;return r=void 0===e?c.getData():c.getByRange(new ue(e,t),new ue(n,o))},this.getSourceDataArray=function(e,t,n,o){var r;return r=void 0===e?c.getData(!0):c.getByRange(new ue(e,t),new ue(n,o),!0)},this.getSourceDataAtCol=function(e){return c.getAtColumn(e)},this.getSourceDataAtRow=function(e){return c.getAtRow(e)},this.getSourceDataAtCell=function(e,t){return c.getAtCell(e,t)},this.getDataAtRow=function(e){var t=u.getRange(new ue(e,0),new ue(e,this.countCols()-1),u.DESTINATION_RENDERER);return t[0]},this.getDataType=function(e,t,n,o){var r=this,i=null,s=null;void 0===e&&(e=0,n=this.countRows(),t=0,o=this.countCols()),void 0===n&&(n=e),void 0===o&&(o=t);var a="mixed";return te(Math.min(e,n),Math.max(e,n),function(e){var n=!0;return te(Math.min(t,o),Math.max(t,o),function(t){var o=r.getCellMeta(e,t);return s=o.type,i?n=i===s:i=s,n}),a=n?s:"mixed",n}),a},this.removeCellMeta=function(e,t,n){var o=p.getCellMeta(e,t);void 0!=o[n]&&delete l.cellSettings[e][t][n]},this.spliceCellsMeta=function(e,t){for(var n,o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];(n=l.cellSettings).splice.apply(n,$traceurRuntime.spread([e,t],o))},this.setCellMetaObject=function(e,t,n){if("object"==typeof n)for(var o in n)if(n.hasOwnProperty(o)){var r=n[o];this.setCellMeta(e,t,o,r)}},this.setCellMeta=function(e,t,n,o){var r;r=w.toPhysical(e,t),e=r[0],t=r[1],r,l.cellSettings[e]||(l.cellSettings[e]=[]),l.cellSettings[e][t]||(l.cellSettings[e][t]=new l.columnSettings[t]),l.cellSettings[e][t][n]=o,E.hooks.run(p,"afterSetCellMeta",e,t,n,o)},this.getCellsMeta=function(){return q(l.cellSettings)},this.getCellMeta=function(e,t){var n,o,r=u.colToProp(t),i=e,a=t;if(n=w.toPhysical(e,t),e=n[0],t=n[1],n,l.columnSettings[t]||(l.columnSettings[t]=A(m,l.columnsSettingConflicts)),l.cellSettings[e]||(l.cellSettings[e]=[]),l.cellSettings[e][t]||(l.cellSettings[e][t]=new l.columnSettings[t]),o=l.cellSettings[e][t],o.row=e,o.col=t,o.visualRow=i,o.visualCol=a,o.prop=r,o.instance=p,E.hooks.run(p,"beforeGetCellMeta",e,t,o),U(o,s(o)),o.cells){var c=o.cells.call(o,e,t,r);c&&(U(o,c),U(o,s(c)))}return E.hooks.run(p,"afterGetCellMeta",e,t,o),o},this.getCellMetaAtRow=function(e){return l.cellSettings[e]},this.isColumnModificationAllowed=function(){return!("object"===p.dataType||p.getSettings().columns)};var v=se("renderer");this.getCellRenderer=function(e,t){var n=v.call(this,e,t);return Q(n)},this.getCellEditor=se("editor"),this.getCellValidator=se("validator"),this.validateCells=function(e){var t=new n;e&&(t.onQueueEmpty=e);for(var o=p.countRows()-1;o>=0;){for(var r=p.countCols()-1;r>=0;)t.addValidatorToQueue(),p.validateCell(p.getDataAtCell(o,r),p.getCellMeta(o,r),function(e){if("boolean"!=typeof e)throw new Error("Validation error: result is not boolean");e===!1&&(t.valid=!1),t.removeValidatorFormQueue()},"validateCells"),r--;o--}t.checkIfQueueIsEmpty()},this.getRowHeader=function(e){var t=l.settings.rowHeaders;return void 0!==e&&(e=E.hooks.run(p,"modifyRowHeader",e)),void 0===e?(t=[],te(p.countRows()-1,function(e){t.push(p.getRowHeader(e))})):Array.isArray(t)&&void 0!==t[e]?t=t[e]:P(t)?t=t(e):t&&"string"!=typeof t&&"number"!=typeof t&&(t=e+1),t},this.hasRowHeaders=function(){return!!l.settings.rowHeaders},this.hasColHeaders=function(){if(void 0!==l.settings.colHeaders&&null!==l.settings.colHeaders)return!!l.settings.colHeaders;for(var e=0,t=p.countCols();e<t;e++)if(p.getColHeader(e))return!0;return!1},this.getColHeader=function(e){var t=l.settings.columns&&P(l.settings.columns),n=l.settings.colHeaders;if(e=E.hooks.run(p,"modifyColHeader",e),void 0===e){for(var o=[],r=t?p.countSourceCols():p.countCols(),i=0;i<r;i++)o.push(p.getColHeader(i));n=o}else{var s=function(e){for(var t=[],n=p.countSourceCols(),o=0;o<n;o++)P(p.getSettings().columns)&&p.getSettings().columns(o)&&t.push(o);return t[e]},a=e;e=E.hooks.run(p,"modifyCol",e);var u=s(e);l.settings.columns&&P(l.settings.columns)&&l.settings.columns(u)&&l.settings.columns(u).title?n=l.settings.columns(u).title:l.settings.columns&&l.settings.columns[e]&&l.settings.columns[e].title?n=l.settings.columns[e].title:Array.isArray(l.settings.colHeaders)&&void 0!==l.settings.colHeaders[e]?n=l.settings.colHeaders[e]:P(l.settings.colHeaders)?n=l.settings.colHeaders(e):l.settings.colHeaders&&"string"!=typeof l.settings.colHeaders&&"number"!=typeof l.settings.colHeaders&&(n=ae(a))}return n},this._getColWidthFromSettings=function(e){var t=p.getCellMeta(0,e),n=t.width;if(void 0!==n&&n!==l.settings.width||(n=t.colWidths),void 0!==n&&null!==n){switch(typeof n){case"object":n=n[e];break;case"function":n=n(e)}"string"==typeof n&&(n=parseInt(n,10))}return n},this.getColWidth=function(e){var t=p._getColWidthFromSettings(e);return t=E.hooks.run(p,"modifyColWidth",t,e),void 0===t&&(t=de.DEFAULT_WIDTH),t},this._getRowHeightFromSettings=function(e){var t=l.settings.rowHeights;if(void 0!==t&&null!==t){switch(typeof t){case"object":t=t[e];break;case"function":t=t(e)}"string"==typeof t&&(t=parseInt(t,10))}return t},this.getRowHeight=function(e){var t=p._getRowHeightFromSettings(e);return t=E.hooks.run(p,"modifyRowHeight",t,e)},this.countSourceRows=function(){var e=E.hooks.run(p,"modifySourceLength");return e||(p.getSourceData()?p.getSourceData().length:0)},this.countSourceCols=function(){var e=0,t=p.getSourceData()&&p.getSourceData()[0]?p.getSourceData()[0]:[];return e=G(t)?K(t):t.length||0},this.countRows=function(){return u.getLength()},this.countCols=function(){var e=!1,t=0;if("array"===p.dataType&&(e=l.settings.data&&l.settings.data[0]&&l.settings.data[0].length),e&&(t=l.settings.data[0].length),l.settings.columns){var n=P(l.settings.columns);if(n)if("array"===p.dataType){for(var o=0,r=0;r<t;r++)l.settings.columns(r)&&o++;t=o}else"object"!==p.dataType&&"function"!==p.dataType||(t=u.colToPropCache.length);else t=l.settings.columns.length}else"object"!==p.dataType&&"function"!==p.dataType||(t=u.colToPropCache.length);return t},this.rowOffset=function(){return p.view.wt.wtTable.getFirstRenderedRow()},this.colOffset=function(){return p.view.wt.wtTable.getFirstRenderedColumn()},this.countRenderedRows=function(){return p.view.wt.drawn?p.view.wt.wtTable.getRenderedRowsCount():-1},this.countVisibleRows=function(){return p.view.wt.drawn?p.view.wt.wtTable.getVisibleRowsCount():-1},this.countRenderedCols=function(){return p.view.wt.drawn?p.view.wt.wtTable.getRenderedColumnsCount():-1},this.countVisibleCols=function(){return p.view.wt.drawn?p.view.wt.wtTable.getVisibleColumnsCount():-1},this.countEmptyRows=function(e){for(var t,n=p.countRows()-1,o=0;n>=0;){if(t=E.hooks.run(this,"modifyRow",n),p.isEmptyRow(t))o++;else if(e)break;n--}return o},this.countEmptyCols=function(e){if(p.countRows()<1)return 0;for(var t=p.countCols()-1,n=0;t>=0;){if(p.isEmptyCol(t))n++;else if(e)break;t--}return n},this.isEmptyRow=function(e){return l.settings.isEmptyRow.call(p,e)},this.isEmptyCol=function(e){return l.settings.isEmptyCol.call(p,e)},this.selectCell=function(e,t,n,o,r,i){var s;if(i=I(i)||i===!0,"number"!=typeof e||e<0||e>=p.countRows())return!1;if("number"!=typeof t||t<0||t>=p.countCols())return!1;if(L(n)){if("number"!=typeof n||n<0||n>=p.countRows())return!1;if("number"!=typeof o||o<0||o>=p.countCols())return!1}return s=new ue(e,t),l.selRange=new ce(s,s,s),i&&p.listen(),I(n)?h.setRangeEnd(l.selRange.from,r):h.setRangeEnd(new ue(n,o),r),p.selection.finish(),!0},this.selectCellByProp=function(e,t,n,o,r){return arguments[1]=u.propToCol(arguments[1]),L(arguments[3])&&(arguments[3]=u.propToCol(arguments[3])),p.selectCell.apply(p,arguments)},this.deselectCell=function(){h.deselect()},this.scrollViewportTo=function(e,t){var n=void 0!==arguments[2]&&arguments[2],o=void 0!==arguments[3]&&arguments[3];if(void 0!==e&&(e<0||e>=p.countRows()))return!1;if(void 0!==t&&(t<0||t>=p.countCols()))return!1;var r=!1;return void 0!==e&&void 0!==t&&(p.view.wt.wtOverlays.topOverlay.scrollTo(e,n),p.view.wt.wtOverlays.leftOverlay.scrollTo(t,o),r=!0),"number"==typeof e&&"number"!=typeof t&&(p.view.wt.wtOverlays.topOverlay.scrollTo(e,n),r=!0),"number"==typeof t&&"number"!=typeof e&&(p.view.wt.wtOverlays.leftOverlay.scrollTo(t,o),r=!0),r},this.destroy=function(){p._clearTimeouts(),p.view&&p.view.destroy(),c&&c.destroy(),c=null,x(p.rootElement),g.destroy(),E.hooks.run(p,"afterDestroy"),E.hooks.destroy(p);for(var e in p)p.hasOwnProperty(e)&&(P(p[e])?p[e]=a:"guid"!==e&&(p[e]=null));u&&u.destroy(),u=null,l=null,d=null,h=null,f=null,p=null,m=null},this.getActiveEditor=function(){return f.getActiveEditor()},this.getPlugin=function(e){return J(this,e)},this.getInstance=function(){return p},this.addHook=function(e,t){E.hooks.add(e,t,p)},this.hasHook=function(e){return E.hooks.has(e,p)},this.addHookOnce=function(e,t){E.hooks.once(e,t,p)},this.removeHook=function(e,t){E.hooks.remove(e,t,p)},this.runHooks=function(e,t,n,o,r,i,s){return E.hooks.run(p,e,t,n,o,r,i,s)},this.timeouts=[],this._registerTimeout=function(e){this.timeouts.push(e)},this._clearTimeouts=function(){for(var e=0,t=this.timeouts.length;e<t;e++)clearTimeout(this.timeouts[e])},this.version=E.version,E.hooks.run(p,"construct")};var he=function(){};he.prototype={data:void 0,dataSchema:void 0,width:void 0,height:void 0,startRows:5,startCols:5,rowHeaders:void 0,colHeaders:null,colWidths:void 0,rowHeights:void 0,columns:void 0,cells:void 0,cell:[],comments:!1,customBorders:!1,minRows:0,minCols:0,maxRows:1/0,maxCols:1/0,minSpareRows:0,minSpareCols:0,allowInsertRow:!0,allowInsertColumn:!0,allowRemoveRow:!0,allowRemoveColumn:!0,multiSelect:!0,fillHandle:!0,fixedRowsTop:0,fixedRowsBottom:0,fixedColumnsLeft:0,outsideClickDeselects:!0,enterBeginsEditing:!0,enterMoves:{row:1,col:0},tabMoves:{row:0,col:1},autoWrapRow:!1,autoWrapCol:!1,copyRowsLimit:1e3,copyColsLimit:1e3,pasteMode:"overwrite",persistentState:void 0,currentRowClassName:void 0,currentColClassName:void 0,currentHeaderClassName:"ht__highlight",className:void 0,tableClassName:void 0,stretchH:"none",isEmptyRow:function(e){var t,n,o,r;for(t=0,n=this.countCols();t<n;t++)if(o=this.getDataAtCell(e,t),""!==o&&null!==o&&L(o))return"object"==typeof o&&(r=this.getCellMeta(e,t),$(this.getSchema()[r.prop],o));return!0},isEmptyCol:function(e){var t,n,o;for(t=0,n=this.countRows();t<n;t++)if(o=this.getDataAtCell(t,e),""!==o&&null!==o&&L(o))return!1;return!0},observeDOMVisibility:!0,allowInvalid:!0,allowEmpty:!0,invalidCellClassName:"htInvalid",placeholder:!1,placeholderCellClassName:"htPlaceholder",readOnlyCellClassName:"htDimmed",renderer:void 0,commentedCellClassName:"htCommentCell",fragmentSelection:!1,readOnly:!1,skipColumnOnPaste:!1,search:!1,type:"text",copyable:!0,editor:void 0,autoComplete:void 0,visibleRows:10,trimDropdown:!0,debug:!1,wordWrap:!0,noWordWrapClassName:"htNoWrap",contextMenu:void 0,contextMenuCopyPaste:void 0,copyPaste:void 0,undo:void 0,columnSorting:void 0,manualColumnMove:void 0,manualColumnResize:void 0,manualRowMove:void 0,manualRowResize:void 0,mergeCells:!1,viewportRowRenderingOffset:"auto",viewportColumnRenderingOffset:"auto",validator:void 0,disableVisualSelection:!1,sortIndicator:void 0,manualColumnFreeze:void 0,trimWhitespace:!0,settings:void 0,source:void 0,title:void 0,checkedTemplate:void 0,uncheckedTemplate:void 0,label:void 0,format:void 0,language:void 0,selectOptions:void 0,autoColumnSize:void 0,autoRowSize:void 0,dateFormat:void 0,correctFormat:!1,defaultDate:void 0,strict:void 0,allowHtml:!1,renderAllRows:void 0,preventOverflow:!1,bindRowsWithHeaders:void 0,collapsibleColumns:void 0,columnSummary:void 0,dropdownMenu:void 0,filters:void 0,formulas:void 0,ganttChart:void 0,headerTooltips:void 0,hiddenColumns:void 0,hiddenRows:void 0,nestedHeaders:void 0,trimRows:void 0,rowHeaderWidth:void 0,columnHeaderHeight:void 0,observeChanges:void 0,sortFunction:void 0,sortByRelevance:!0,filter:!0,filteringCaseSensitive:!1},E.DefaultSettings=he},{"3rdparty/walkontable/src/calculator/viewportColumns":4,"3rdparty/walkontable/src/cell/coords":6,"3rdparty/walkontable/src/cell/range":7,browser:24,dataMap:27,dataSource:28,editorManager:29,eventManager:42,"helpers/array":43,"helpers/browser":44,"helpers/data":45,"helpers/dom/element":47,"helpers/function":50,"helpers/mixed":51,"helpers/number":52,"helpers/object":53,"helpers/setting":54,"helpers/string":55,numbro:"numbro",plugins:61,renderers:117,tableView:126,"utils/recordTranslator":130}],27:[function(e,t,n){"use strict";function o(e,t,n){var o=this;this.instance=e,this.priv=t,this.GridSettings=n,this.dataSource=this.instance.getSettings().data,this.cachedLength=null,this.skipCache=!1,this.latestSourceRowsCount=0,this.dataSource&&this.dataSource[0]?this.duckSchema=this.recursiveDuckSchema(this.dataSource[0]):this.duckSchema={},this.createMap(),this.interval=O.create(function(){return o.clearLengthCache()},"15fps"),this.instance.addHook("skipLengthCache",function(e){return o.onSkipLengthCache(e)})}Object.defineProperties(n,{DataMap:{get:function(){return o}},__esModule:{value:!0}});var r,i,s,a,l,u,c,d,h,f=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,p=(i=e("SheetClip"),i&&i.__esModule&&i||{default:i}).default,m=(s=e("helpers/data"),s&&s.__esModule&&s||{default:s}).cellMethodLookupFactory,g=(a=e("helpers/setting"),a&&a.__esModule&&a||{default:a}).columnFactory,w=(l=e("helpers/object"),l&&l.__esModule&&l||{default:l}),v=w.createObjectPropListener,y=w.duckSchema,b=w.deepExtend,C=w.deepClone,_=w.isObject,R=w.deepObjectSize,M=(u=e("helpers/array"),u&&u.__esModule&&u||{default:u}),S=M.extendArray,E=M.to2dArray,O=(c=e("utils/interval"),c&&c.__esModule&&c||{default:c}).Interval,T=(d=e("helpers/number"),d&&d.__esModule&&d||{default:d}).rangeEach,k=(h=e("multiMap"),h&&h.__esModule&&h||{default:h}).MultiMap;o.prototype.DESTINATION_RENDERER=1,o.prototype.DESTINATION_CLIPBOARD_GENERATOR=2,o.prototype.recursiveDuckSchema=function(e){return y(e)},o.prototype.recursiveDuckColumns=function(e,t,n){var o,r;if("undefined"==typeof t&&(t=0,n=""),"object"==typeof e&&!Array.isArray(e))for(r in e)e.hasOwnProperty(r)&&(null===e[r]?(o=n+r,this.colToPropCache.push(o),this.propToColCache.set(o,t),t++):t=this.recursiveDuckColumns(e[r],t,r+"."));return t},o.prototype.createMap=function(){var e,t=this.getSchema();if("undefined"==typeof t)throw new Error("trying to create `columns` definition but you didn't provide `schema` nor `data`");this.colToPropCache=[],this.propToColCache=new k;var n=this.instance.getSettings().columns;if(n){var o=n.length,r=0,i=!1,s=R(t);for("function"==typeof n&&(o=s>0?s:this.instance.countSourceCols(),i=!0),e=0;e<o;e++){var a=i?n(e):n[e];if(_(a)){if("undefined"!=typeof a.data){var l=i?r:e;this.colToPropCache[l]=a.data,this.propToColCache.set(a.data,l)}r++}}}else this.recursiveDuckColumns(t)},o.prototype.colToProp=function(e){return e=f.hooks.run(this.instance,"modifyCol",e),this.colToPropCache&&"undefined"!=typeof this.colToPropCache[e]?this.colToPropCache[e]:e},o.prototype.propToCol=function(e){var t;return t="undefined"==typeof this.propToColCache.get(e)?e:this.propToColCache.get(e),t=f.hooks.run(this.instance,"unmodifyCol",t)},o.prototype.getSchema=function(){var e=this.instance.getSettings().dataSchema;return e?"function"==typeof e?e():e:this.duckSchema},o.prototype.createRow=function(e,t,n){var o,r,i=this.instance.countCols(),s=0;t||(t=1),("number"!=typeof e||e>=this.instance.countSourceRows())&&(e=this.instance.countSourceRows()),f.hooks.run(this.instance,"beforeCreateRow",e,t,n),r=e;for(var a=this.instance.getSettings().maxRows;s<t&&this.instance.countSourceRows()<a;)"array"===this.instance.dataType?this.instance.getSettings().dataSchema?o=C(this.getSchema()):(o=[],T(i-1,function(){return o.push(null)})):"function"===this.instance.dataType?o=this.instance.getSettings().dataSchema(e):(o={},b(o,this.getSchema())),e===this.instance.countSourceRows()?this.dataSource.push(o):this.spliceData(e,0,o),s++,r++;return f.hooks.run(this.instance,"afterCreateRow",e,s,n),this.instance.forceFullRender=!0,s},o.prototype.createCol=function(e,t,n){if(!this.instance.isColumnModificationAllowed())throw new Error("Cannot create new column. When data source in an object, you can only have as much columns as defined in first data row, data schema or in the 'columns' setting.If you want to be able to add new columns, you have to use array datasource.");var o,r,i=this.instance.countSourceRows(),s=this.dataSource,a=0;t||(t=1),("number"!=typeof e||e>=this.instance.countCols())&&(e=this.instance.countCols()),f.hooks.run(this.instance,"beforeCreateCol",e,t,n),r=e;for(var l=this.instance.getSettings().maxCols;a<t&&this.instance.countCols()<l;){if(o=g(this.GridSettings,this.priv.columnsSettingConflicts),"number"!=typeof e||e>=this.instance.countCols()){if(i>0)for(var u=0;u<i;u++)"undefined"==typeof s[u]&&(s[u]=[]),s[u].push(null);else s.push([null]);this.priv.columnSettings.push(o)}else{for(var u=0;u<i;u++)s[u].splice(r,0,null);this.priv.columnSettings.splice(r,0,o)}a++,r++}return f.hooks.run(this.instance,"afterCreateCol",e,a,n),this.instance.forceFullRender=!0,a},o.prototype.removeRow=function(e,t,n){t||(t=1),"number"!=typeof e&&(e=-t),t=f.hooks.run(this.instance,"modifyRemovedAmount",t,e),e=(this.instance.countSourceRows()+e)%this.instance.countSourceRows();var o=this.physicalRowsToLogical(e,t),r=f.hooks.run(this.instance,"beforeRemoveRow",e,t,o,n);if(r!==!1){var i,s=this.dataSource;i=this.filterData(e,t),i&&(s.length=0,Array.prototype.push.apply(s,i)),f.hooks.run(this.instance,"afterRemoveRow",e,t,o,n),this.instance.forceFullRender=!0}},o.prototype.removeCol=function(e,t,n){if("object"===this.instance.dataType||this.instance.getSettings().columns)throw new Error("cannot remove column with object data source or columns option specified");t||(t=1),"number"!=typeof e&&(e=-t),e=(this.instance.countCols()+e)%this.instance.countCols();var o=this.physicalColumnsToLogical(e,t),r=o.slice(0).sort(function(e,t){return t-e}),i=f.hooks.run(this.instance,"beforeRemoveCol",e,t,o,n);if(i!==!1){for(var s=!0,a=r.length,l=this.dataSource,u=0;u<a;u++)s&&o[0]!==o[u]-u&&(s=!1);if(s)for(var c=0,d=this.instance.countSourceRows();c<d;c++)l[c].splice(o[0],t);else{for(var h=0,p=this.instance.countSourceRows();h<p;h++)for(var m=0;m<a;m++)l[h].splice(r[m],1);for(var g=0;g<a;g++)this.priv.columnSettings.splice(o[g],1)}f.hooks.run(this.instance,"afterRemoveCol",e,t,o,n),this.instance.forceFullRender=!0}},o.prototype.spliceCol=function(e,t,n){var o=4<=arguments.length?[].slice.call(arguments,3):[],r=this.instance.getDataAtCol(e),i=r.slice(t,t+n),s=r.slice(t+n);S(o,s);for(var a=0;a<n;)o.push(null),a++;return E(o),this.instance.populateFromArray(t,e,o,null,null,"spliceCol"),i},o.prototype.spliceRow=function(e,t,n){var o=4<=arguments.length?[].slice.call(arguments,3):[],r=this.instance.getSourceDataAtRow(e),i=r.slice(t,t+n),s=r.slice(t+n);S(o,s);for(var a=0;a<n;)o.push(null),a++;return this.instance.populateFromArray(e,t,[o],null,null,"spliceRow"),i},o.prototype.spliceData=function(e,t,n){var o=f.hooks.run(this.instance,"beforeDataSplice",e,t,n);o!==!1&&this.dataSource.splice(e,t,n)},o.prototype.filterData=function(e,t){var n=this.physicalRowsToLogical(e,t),o=f.hooks.run(this.instance,"beforeDataFilter",e,t,n);if(o!==!1){var r=this.dataSource.filter(function(e,t){return n.indexOf(t)==-1});return r}},o.prototype.get=function(e,t){e=f.hooks.run(this.instance,"modifyRow",e);var n=this.dataSource[e],o=f.hooks.run(this.instance,"modifyRowData",e);n=isNaN(o)?o:n;var r=null;if(n&&n.hasOwnProperty&&n.hasOwnProperty(t))r=n[t];else if("string"==typeof t&&t.indexOf(".")>-1){var i=t.split("."),s=n;if(!s)return null;for(var a=0,l=i.length;a<l;a++)if(s=s[i[a]],"undefined"==typeof s)return null;r=s}else"function"==typeof t&&(r=t(this.dataSource.slice(e,e+1)[0]));if(f.hooks.has("modifyData",this.instance)){var u=v(r);f.hooks.run(this.instance,"modifyData",e,this.propToCol(t),u,"get"),u.isTouched()&&(r=u.value)}return r};var x=m("copyable",!1);o.prototype.getCopyable=function(e,t){return x.call(this.instance,e,this.propToCol(t))?this.get(e,t):""},o.prototype.set=function(e,t,n,o){e=f.hooks.run(this.instance,"modifyRow",e,o||"datamapGet");var r=this.dataSource[e],i=f.hooks.run(this.instance,"modifyRowData",e);if(r=isNaN(i)?i:r,f.hooks.has("modifyData",this.instance)){var s=v(n);f.hooks.run(this.instance,"modifyData",e,this.propToCol(t),s,"set"),s.isTouched()&&(n=s.value)}if(r&&r.hasOwnProperty&&r.hasOwnProperty(t))r[t]=n;else if("string"==typeof t&&t.indexOf(".")>-1){for(var a=t.split("."),l=r,u=0,c=a.length-1;u<c;u++)"undefined"==typeof l[a[u]]&&(l[a[u]]={}),l=l[a[u]];l[a[u]]=n}else"function"==typeof t?t(this.dataSource.slice(e,e+1)[0],n):r[t]=n},o.prototype.physicalRowsToLogical=function(e,t){for(var n,o=this.instance.countSourceRows(),r=(o+e)%o,i=[],s=t;r<o&&s;)n=f.hooks.run(this.instance,"modifyRow",r),i.push(n),s--,r++;return i},o.prototype.physicalColumnsToLogical=function(e,t){for(var n=this.instance.countCols(),o=(n+e)%n,r=[],i=t;o<n&&i;){var s=f.hooks.run(this.instance,"modifyCol",o);r.push(s),i--,o++}return r},o.prototype.clear=function(){for(var e=0;e<this.instance.countSourceRows();e++)for(var t=0;t<this.instance.countCols();t++)this.set(e,this.colToProp(t),"")},o.prototype.clearLengthCache=function(){this.cachedLength=null},o.prototype.getLength=function(){var e,t=this,n=this.instance.getSettings().maxRows;e=n<0||0===n?0:n||1/0;var o=this.instance.countSourceRows();if(f.hooks.has("modifyRow",this.instance)){var r=this.skipCache;this.interval.start(),o!==this.latestSourceRowsCount&&(r=!0),this.latestSourceRowsCount=o,null===this.cachedLength||r?(T(o-1,function(e){e=f.hooks.run(t.instance,"modifyRow",e),null===e&&--o}),this.cachedLength=o):o=this.cachedLength}else this.interval.stop();return Math.min(o,e)},o.prototype.getAll=function(){var e={row:0,col:0},t=this.instance.getSettings().maxRows;if(0===t)return[];var n={row:Math.min(Math.max(t-1,0),Math.max(this.instance.countSourceRows()-1,0)),col:Math.max(this.instance.countCols()-1,0)};return e.row-n.row!==0||this.instance.countSourceRows()?this.getRange(e,n,o.prototype.DESTINATION_RENDERER):[]},o.prototype.getRange=function(e,t,n){var o,r,i,s,a,l=[],u=n===this.DESTINATION_CLIPBOARD_GENERATOR?this.getCopyable:this.get;for(r=Math.max(e.row,t.row),s=Math.max(e.col,t.col),o=Math.min(e.row,t.row);o<=r;o++){a=[];var c=f.hooks.run(this.instance,"modifyRow",o);for(i=Math.min(e.col,t.col);i<=s&&null!==c;i++)a.push(u.call(this,o,this.colToProp(i)));null!==c&&l.push(a)}return l},o.prototype.getText=function(e,t){return p.stringify(this.getRange(e,t,this.DESTINATION_RENDERER))},o.prototype.getCopyableText=function(e,t){return p.stringify(this.getRange(e,t,this.DESTINATION_CLIPBOARD_GENERATOR))},o.prototype.onSkipLengthCache=function(e){var t=this;this.skipCache=!0,setTimeout(function(){t.skipCache=!1},e)},o.prototype.destroy=function(){this.interval.stop(),this.interval=null,this.instance=null,this.priv=null,this.GridSettings=null,this.dataSource=null,this.cachedLength=null,this.duckSchema=null}},{SheetClip:"SheetClip",browser:24,"helpers/array":43,"helpers/data":45,"helpers/number":52,"helpers/object":53,"helpers/setting":54,multiMap:59,"utils/interval":129}],28:[function(e,t,n){"use strict";Object.defineProperties(n,{DataSource:{get:function(){return u}},__esModule:{value:!0}});var o,r,i,s=(o=e("helpers/object"),o&&o.__esModule&&o||{default:o}).getProperty,a=(r=e("helpers/array"),r&&r.__esModule&&r||{default:r}).arrayEach,l=(i=e("helpers/number"),i&&i.__esModule&&i||{default:i}).rangeEach,u=function(e){var t=void 0!==arguments[1]?arguments[1]:[];this.hot=e,this.data=t,this.dataType="array",this.colToProp=function(){},this.propToCol=function(){}};$traceurRuntime.createClass(u,{getData:function(){var e=void 0!==arguments[0]&&arguments[0],t=this.data;return e&&(t=this.getByRange({row:0,col:0},{row:Math.max(this.countRows()-1,0),col:Math.max(this.countColumns()-1,0)},!0)),t},setData:function(e){this.data=e},getAtColumn:function(e){var t=this,n=[];return a(this.data,function(o){var r=t.colToProp(e);o="string"==typeof r?s(o,r):o[r],n.push(o)}),n},getAtRow:function(e){return this.data[e]},getAtCell:function(e,t){var n=null,o=this.hot.runHooks("modifyRowData",e),r=isNaN(o)?o:this.data[e];if(r){var i=this.colToProp(t);n="string"==typeof i?s(r,i):"function"==typeof i?i(this.data.slice(e,e+1)[0]):r[i]}return n},getByRange:function(e,t){var n=void 0!==arguments[2]&&arguments[2],o=this,r=Math.min(e.row,t.row),i=Math.min(e.col,t.col),s=Math.max(e.row,t.row),a=Math.max(e.col,t.col),u=[];return l(r,s,function(e){var t,r=o.getAtRow(e);"array"===o.dataType?t=r.slice(i,a+1):"object"===o.dataType&&(t=n?[]:{},l(i,a,function(e){var i=o.colToProp(e);n?t.push(r[i]):t[i]=r[i]})),u.push(t)}),u},countRows:function(){return Array.isArray(this.data)?this.data.length:0},countColumns:function(){var e=0;return Array.isArray(this.data)&&("array"===this.dataType?e=this.data[0].length:"object"===this.dataType&&(e=Object.keys(this.data[0]).length)),e},destroy:function(){this.data=null,this.hot=null}},{})},{"helpers/array":43,"helpers/number":52,"helpers/object":53}],29:[function(e,t,n){"use strict";function o(e,t,n){function o(e){var o="function"==typeof t.settings.enterMoves?t.settings.enterMoves(event):t.settings.enterMoves;e?n.transformStart(-o.row,-o.col):n.transformStart(o.row,o.col,!0)}function r(e){e?n.transformEnd(-1,0):n.transformStart(-1,0)}function i(e){e?n.transformEnd(1,0):n.transformStart(1,0)}function s(e){e?n.transformEnd(0,1):n.transformStart(0,1)}function a(e){e?n.transformEnd(0,-1):n.transformStart(0,-1)}function l(l){var u,h;if(e.isListening()&&(c.hooks.run(e,"beforeKeyDown",l),!_&&!y(l)&&(t.lastKeyCode=l.keyCode,n.isSelected()))){if(u=(l.ctrlKey||l.metaKey)&&!l.altKey,g&&!g.isWaiting()&&!(p(l.keyCode)||m(l.keyCode)||u||C.isEditorOpened()))return void C.openEditor("",l);switch(h=l.shiftKey?n.setRangeEnd:n.setRangeStart,l.keyCode){case f.A:!C.isEditorOpened()&&u&&(n.selectAll(),l.preventDefault(),w(l));break;case f.ARROW_UP:C.isEditorOpened()&&!g.isWaiting()&&C.closeEditorAndSaveChanges(u),r(l.shiftKey),l.preventDefault(),w(l);break;case f.ARROW_DOWN:C.isEditorOpened()&&!g.isWaiting()&&C.closeEditorAndSaveChanges(u),i(l.shiftKey),l.preventDefault(),w(l);break;case f.ARROW_RIGHT:C.isEditorOpened()&&!g.isWaiting()&&C.closeEditorAndSaveChanges(u),s(l.shiftKey),l.preventDefault(),w(l);break;case f.ARROW_LEFT:C.isEditorOpened()&&!g.isWaiting()&&C.closeEditorAndSaveChanges(u),a(l.shiftKey),l.preventDefault(),w(l);break;case f.TAB:var b="function"==typeof t.settings.tabMoves?t.settings.tabMoves(l):t.settings.tabMoves;l.shiftKey?n.transformStart(-b.row,-b.col):n.transformStart(b.row,b.col,!0),l.preventDefault(),w(l);break;case f.BACKSPACE:case f.DELETE:n.empty(l),C.prepareEditor(),l.preventDefault();break;case f.F2:C.openEditor(null,l),g&&g.enableFullEditMode(),l.preventDefault();break;case f.ENTER:C.isEditorOpened()?(g&&g.state!==c.EditorState.WAITING&&C.closeEditorAndSaveChanges(u),o(l.shiftKey)):e.getSettings().enterBeginsEditing?(C.openEditor(null,l),g&&g.enableFullEditMode()):o(l.shiftKey),l.preventDefault(),v(l);break;case f.ESCAPE:C.isEditorOpened()&&C.closeEditorAndRestoreOriginalValue(u),l.preventDefault();break;case f.HOME:h(l.ctrlKey||l.metaKey?new d(0,t.selRange.from.col):new d(t.selRange.from.row,0)),l.preventDefault(),w(l);break;case f.END:h(l.ctrlKey||l.metaKey?new d(e.countRows()-1,t.selRange.from.col):new d(t.selRange.from.row,e.countCols()-1)),l.preventDefault(),w(l);break;case f.PAGE_UP:n.transformStart(-e.countVisibleRows(),0),l.preventDefault(),w(l);break;case f.PAGE_DOWN:n.transformStart(e.countVisibleRows(),0),l.preventDefault(),w(l)}}}function u(){function t(e,t,n){"TD"==n.nodeName&&(C.openEditor(),g&&g.enableFullEditMode())}e.addHook("afterDocumentKeyDown",l),h.addEventListener(document.documentElement,"keydown",function(t){_||e.runHooks("afterDocumentKeyDown",t)}),e.view.wt.update("onCellDblClick",t),e.addHook("afterDestroy",function(){_=!0})}var h,g,C=this,_=!1;h=b(e),this.destroyEditor=function(e){this.closeEditor(e)},this.getActiveEditor=function(){return g},this.prepareEditor=function(){var n,o,r,i,s,a,l;return g&&g.isWaiting()?void this.closeEditor(!1,!1,function(e){e&&C.prepareEditor()}):(n=t.selRange.highlight.row,o=t.selRange.highlight.col,r=e.colToProp(o),i=e.getCell(n,o),s=e.getSourceDataAtCell(e.runHooks("modifyRow",n),o),a=e.getCellMeta(n,o),l=e.getCellEditor(a),void(l?(g=c.editors.getEditor(l,e),g.prepare(n,o,r,i,s,a)):g=void 0))},this.isEditorOpened=function(){return g&&g.isOpened()},this.openEditor=function(e,t){g&&!g.cellProperties.readOnly?g.beginEditing(e,t):g&&g.cellProperties.readOnly&&t&&t.keyCode===f.ENTER&&o()},this.closeEditor=function(e,t,n){g?g.finishEditing(e,t,n):n&&n(!1)},this.closeEditorAndSaveChanges=function(e){return this.closeEditor(!1,e)},this.closeEditorAndRestoreOriginalValue=function(e){return this.closeEditor(!0,e)},u()}Object.defineProperties(n,{EditorManager:{get:function(){return o}},__esModule:{value:!0}});var r,i,s,a,l,u,c=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,d=(i=e("3rdparty/walkontable/src/cell/coords"),i&&i.__esModule&&i||{default:i}).WalkontableCellCoords,h=(s=e("helpers/unicode"),s&&s.__esModule&&s||{default:s}),f=h.KEY_CODES,p=h.isMetaKey,m=h.isCtrlKey,g=(a=e("helpers/dom/event"),a&&a.__esModule&&a||{default:a}),w=g.stopPropagation,v=g.stopImmediatePropagation,y=g.isImmediatePropagationStopped,b=((l=e("editors"),l&&l.__esModule&&l||{default:l}).getEditor,(u=e("eventManager"),u&&u.__esModule&&u||{default:u}).eventManager);c.EditorManager=o},{"3rdparty/walkontable/src/cell/coords":6,browser:24,editors:30,eventManager:42,"helpers/dom/event":48,"helpers/unicode":56}],30:[function(e,t,n){"use strict";function o(e){var t,n;n={},t=e,this.getConstructor=function(){return e},this.getInstance=function(e){return e.guid in n||(n[e.guid]=new t(e)),n[e.guid]}}function r(e,t){var n=new o(t);"string"==typeof e&&(h[e]=n,c.editors[d(e)+"Editor"]=t),f.set(t,n)}function i(e,t){var n;if("function"==typeof e)f.get(e)||r(null,e),n=f.get(e);else{if("string"!=typeof e)throw Error('Only strings and functions can be passed as "editor" parameter ');n=h[e]}if(!n)throw Error('No editor registered under name "'+e+'"');return n.getInstance(t)}function s(e){var t;if("string"!=typeof e)throw Error('Only strings and functions can be passed as "editor" parameter ');if(t=h[e],!t)throw Error('No editor registered under name "'+e+'"');return t.getConstructor()}function a(e){return!!h[e]}Object.defineProperties(n,{registerEditor:{get:function(){return r}},getEditor:{get:function(){return i}},hasEditor:{get:function(){return a}},getEditorConstructor:{get:function(){return s}},__esModule:{value:!0}});var l,u,c=(l=e("browser"),l&&l.__esModule&&l||{default:l}).default,d=(u=e("helpers/string"),u&&u.__esModule&&u||{default:u}).toUpperCaseFirst,h={},f=new WeakMap;c.editors=c.editors||{},c.editors.registerEditor=r,c.editors.getEditor=i},{browser:24,"helpers/string":55}],31:[function(e,t,n){"use strict";function o(e){this.instance=e,this.state=a.EditorState.VIRGIN,this._opened=!1,this._fullEditMode=!1,this._closeCallback=null,this.init()}Object.defineProperties(n,{BaseEditor:{get:function(){return o}},__esModule:{value:!0}});var r,i,s,a=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,l=(i=e("helpers/mixed"),i&&i.__esModule&&i||{default:i}).stringify,u=(s=e("3rdparty/walkontable/src/cell/coords"),s&&s.__esModule&&s||{default:s}).WalkontableCellCoords;a.editors=a.editors||{},a.editors.BaseEditor=o,a.EditorState={VIRGIN:"STATE_VIRGIN",EDITING:"STATE_EDITING",WAITING:"STATE_WAITING",FINISHED:"STATE_FINISHED"},o.prototype._fireCallbacks=function(e){this._closeCallback&&(this._closeCallback(e),this._closeCallback=null)},o.prototype.init=function(){},o.prototype.getValue=function(){throw Error("Editor getValue() method unimplemented")},o.prototype.setValue=function(e){throw Error("Editor setValue() method unimplemented")},o.prototype.open=function(){throw Error("Editor open() method unimplemented")},o.prototype.close=function(){throw Error("Editor close() method unimplemented");
},o.prototype.prepare=function(e,t,n,o,r,i){this.TD=o,this.row=e,this.col=t,this.prop=n,this.originalValue=r,this.cellProperties=i;var s=!document.activeElement||document.activeElement&&void 0===document.activeElement.nodeName;this.instance.view.isMouseDown()&&document.activeElement&&document.activeElement!==document.body&&!s?document.activeElement.blur():s&&document.body.focus(),this.state=a.EditorState.VIRGIN},o.prototype.extend=function(){function e(){n.apply(this,arguments)}function t(e,t){function n(){}return n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e,e}var n=this.constructor;return t(e,n)},o.prototype.saveValue=function(e,t){var n,o;t?(n=this.instance.getSelected(),n[0]>n[2]&&(o=n[0],n[0]=n[2],n[2]=o),n[1]>n[3]&&(o=n[1],n[1]=n[3],n[3]=o)):n=[this.row,this.col,null,null],this.instance.populateFromArray(n[0],n[1],e,n[2],n[3],"edit")},o.prototype.beginEditing=function(e,t){this.state==a.EditorState.VIRGIN&&(this.instance.view.scrollViewport(new u(this.row,this.col)),this.instance.view.render(),this.state=a.EditorState.EDITING,e="string"==typeof e?e:this.originalValue,this.setValue(l(e)),this.open(t),this._opened=!0,this.focus(),this.instance.view.render(),this.instance.runHooks("afterBeginEditing",this.row,this.col))},o.prototype.finishEditing=function(e,t,n){var o,r=this;if(n){var i=this._closeCallback;this._closeCallback=function(e){i&&i(e),n(e),r.instance.view.render()}}if(!this.isWaiting()){if(this.state==a.EditorState.VIRGIN)return void this.instance._registerTimeout(setTimeout(function(){r._fireCallbacks(!0)},0));if(this.state==a.EditorState.EDITING){if(e)return this.cancelChanges(),void this.instance.view.render();var s=this.getValue();o=this.instance.getSettings().trimWhitespace?[["string"==typeof s?String.prototype.trim.call(s||""):s]]:[[s]],this.state=a.EditorState.WAITING,this.saveValue(o,t),this.instance.getCellValidator(this.cellProperties)?this.instance.addHookOnce("postAfterValidate",function(e){r.state=a.EditorState.FINISHED,r.discardEditor(e)}):(this.state=a.EditorState.FINISHED,this.discardEditor(!0))}}},o.prototype.cancelChanges=function(){this.state=a.EditorState.FINISHED,this.discardEditor()},o.prototype.discardEditor=function(e){this.state===a.EditorState.FINISHED&&(e===!1&&this.cellProperties.allowInvalid!==!0?(this.instance.selectCell(this.row,this.col),this.focus(),this.state=a.EditorState.EDITING,this._fireCallbacks(!1)):(this.close(),this._opened=!1,this._fullEditMode=!1,this.state=a.EditorState.VIRGIN,this._fireCallbacks(!0)))},o.prototype.enableFullEditMode=function(){this._fullEditMode=!0},o.prototype.isInFullEditMode=function(){return this._fullEditMode},o.prototype.isOpened=function(){return this._opened},o.prototype.isWaiting=function(){return this.state===a.EditorState.WAITING},o.prototype.checkEditorSection=function(){var e=this.instance.countRows(),t="";return this.row<this.instance.getSettings().fixedRowsTop?t=this.col<this.instance.getSettings().fixedColumnsLeft?"top-left-corner":"top":this.instance.getSettings().fixedRowsBottom&&this.row>=e-this.instance.getSettings().fixedRowsBottom?t=this.col<this.instance.getSettings().fixedColumnsLeft?"bottom-left-corner":"bottom":this.col<this.instance.getSettings().fixedColumnsLeft&&(t="left"),t}},{"3rdparty/walkontable/src/cell/coords":6,browser:24,"helpers/mixed":51}],32:[function(e,t,n){"use strict";function o(e){H=!1;var t=this.getActiveEditor();if(f(e.keyCode)||e.keyCode===h.BACKSPACE||e.keyCode===h.DELETE||e.keyCode===h.INSERT){var n=0;if(e.keyCode===h.C&&(e.ctrlKey||e.metaKey))return;t.isOpened()||(n+=10),t.htEditor&&t.instance._registerTimeout(setTimeout(function(){t.queryChoices(t.TEXTAREA.value),H=!0},n))}}Object.defineProperties(n,{AutocompleteEditor:{get:function(){return D}},__esModule:{value:!0}});var r,i,s,a,l,u,c,d=(r=e("helpers/unicode"),r&&r.__esModule&&r||{default:r}),h=d.KEY_CODES,f=d.isPrintableChar,p=(i=e("helpers/mixed"),i&&i.__esModule&&i||{default:i}).stringify,m=(s=e("helpers/string"),s&&s.__esModule&&s||{default:s}).stripTags,g=(a=e("helpers/array"),a&&a.__esModule&&a||{default:a}),w=g.pivot,v=(g.arrayFilter,g.arrayMap),y=(l=e("helpers/dom/element"),l&&l.__esModule&&l||{default:l}),b=y.addClass,C=y.getCaretPosition,_=y.getScrollbarWidth,R=y.getSelectionEndPosition,M=y.outerWidth,S=y.outerHeight,E=y.offset,O=y.getTrimmingContainer,T=y.setCaretPosition,k=(u=e("editors"),u&&u.__esModule&&u||{default:u}).registerEditor,x=(c=e("handsontableEditor"),c&&c.__esModule&&c||{default:c}).HandsontableEditor,D=x.prototype.extend();D.prototype.init=function(){x.prototype.init.apply(this,arguments),this.query=null,this.choices=[]},D.prototype.createElements=function(){x.prototype.createElements.apply(this,arguments),b(this.htContainer,"autocompleteEditor"),b(this.htContainer,window.navigator.platform.indexOf("Mac")===-1?"":"htMacScroll")};var H=!1;D.prototype.prepare=function(){this.instance.addHook("beforeKeyDown",o),x.prototype.prepare.apply(this,arguments)},D.prototype.open=function(){this.TEXTAREA_PARENT.style.overflow="auto",x.prototype.open.apply(this,arguments),this.TEXTAREA_PARENT.style.overflow="";var e=this.htEditor.getInstance(),t=this,n=void 0===this.cellProperties.trimDropdown||this.cellProperties.trimDropdown;this.TEXTAREA.style.visibility="visible",this.focus(),e.updateSettings({colWidths:n?[M(this.TEXTAREA)-2]:void 0,width:n?M(this.TEXTAREA)+_()+2:void 0,afterRenderer:function(e,n,o,r,i,s){var a,l,u=t.cellProperties,c=u.filteringCaseSensitive,d=u.allowHtml;i=p(i),i&&!d&&(a=c===!0?i.indexOf(this.query):i.toLowerCase().indexOf(t.query.toLowerCase()),a!==-1&&(l=i.substr(a,t.query.length),i=i.replace(l,"<strong>"+l+"</strong>"))),e.innerHTML=i},autoColumnSize:!0,modifyColWidth:function(e,t){var o=this.getPlugin("autoColumnSize").widths;return o[t]&&(e=o[t]),n?e:e+15}}),this.htEditor.view.wt.wtTable.holder.parentNode.style["padding-right"]=_()+2+"px",H&&(H=!1),t.instance._registerTimeout(setTimeout(function(){t.queryChoices(t.TEXTAREA.value)},0))},D.prototype.close=function(){x.prototype.close.apply(this,arguments)},D.prototype.queryChoices=function(e){var t=this;this.query=e;var n=this.cellProperties,o=n.source,r=(n.filter,n.filteringCaseSensitive,n.allowHtml),i=function(e){return v(e,function(e){return m(e)})};"function"==typeof o?o.call(this.cellProperties,e,function(e){t.updateChoicesList(r?e:i(e))}):Array.isArray(o)?this.updateChoicesList(r?o:i(o)):this.updateChoicesList([])},D.prototype.updateChoicesList=function(e){var t=C(this.TEXTAREA),n=R(this.TEXTAREA),o=this.cellProperties.sortByRelevance,r=this.cellProperties.filter,i=null,s=null;o&&(i=D.sortByRelevance(this.getValue(),e,this.cellProperties.filteringCaseSensitive));var a=Array.isArray(i)?i.length:0;if(r===!1)a&&(s=i[0]);else{for(var l=[],u=0,c=e.length;u<c&&!(o&&a<=u);u++)a?l.push(e[i[u]]):l.push(e[u]);s=0,e=l}this.choices=e,this.htEditor.loadData(w([e])),this.updateDropdownHeight(),this.flipDropdownIfNeeded(),this.cellProperties.strict===!0&&this.highlightBestMatchingChoice(s),this.instance.listen(),this.TEXTAREA.focus(),T(this.TEXTAREA,t,t===n?void 0:n)},D.prototype.flipDropdownIfNeeded=function(){var e=E(this.TEXTAREA),t=S(this.TEXTAREA),n=this.getDropdownHeight(),o=O(this.instance.view.wt.wtTable.TABLE),r=o.scrollTop,i=S(this.instance.view.wt.wtTable.THEAD),s={row:0,col:0};o!==window&&(s=E(o));var a=e.top-s.top-i+r,l=o.scrollHeight-a-i-t,u=n>l&&a>l;return u?this.flipDropdown(n):this.unflipDropdown(),this.limitDropdownIfNeeded(u?a:l,n),u},D.prototype.limitDropdownIfNeeded=function(e,t){if(t>e){var n=0,o=0,r=0,i=null;do r=this.htEditor.getRowHeight(o)||this.htEditor.view.wt.wtSettings.settings.defaultRowHeight,n+=r,o++;while(n<e);i=n-r,this.htEditor.flipped&&(this.htEditor.rootElement.style.top=parseInt(this.htEditor.rootElement.style.top,10)+t-i+"px"),this.setDropdownHeight(n-r)}},D.prototype.flipDropdown=function(e){var t=this.htEditor.rootElement.style;t.position="absolute",t.top=-e+"px",this.htEditor.flipped=!0},D.prototype.unflipDropdown=function(){var e=this.htEditor.rootElement.style;"absolute"===e.position&&(e.position="",e.top=""),this.htEditor.flipped=void 0},D.prototype.updateDropdownHeight=function(){var e=this.htEditor.getColWidth(0)+_()+2,t=this.cellProperties.trimDropdown;this.htEditor.updateSettings({height:this.getDropdownHeight(),width:t?void 0:e}),this.htEditor.view.wt.wtTable.alignOverlaysWithTrimmingContainer()},D.prototype.setDropdownHeight=function(e){this.htEditor.updateSettings({height:e})},D.prototype.finishEditing=function(e){e||this.instance.removeHook("beforeKeyDown",o),x.prototype.finishEditing.apply(this,arguments)},D.prototype.highlightBestMatchingChoice=function(e){"number"==typeof e?this.htEditor.selectCell(e,0):this.htEditor.deselectCell()},D.sortByRelevance=function(e,t,n){var o,r,i,s,a=[],l=e.length,u=[],c=t.length;if(0===l){for(s=0;s<c;s++)u.push(s);return u}for(s=0;s<c;s++)o=m(p(t[s])),r=n?o.indexOf(e):o.toLowerCase().indexOf(e.toLowerCase()),r!=-1&&(i=o.length-r-l,a.push({baseIndex:s,index:r,charsLeft:i,value:o}));for(a.sort(function(e,t){return t.index===-1?-1:e.index===-1?1:e.index<t.index?-1:t.index<e.index?1:e.index===t.index?e.charsLeft<t.charsLeft?-1:e.charsLeft>t.charsLeft?1:0:void 0}),s=0,c=a.length;s<c;s++)u.push(a[s].baseIndex);return u},D.prototype.getDropdownHeight=function(){var e=this.htEditor.getInstance().getRowHeight(0)||23,t=this.cellProperties.visibleRows;return this.choices.length>=t?t*e:this.choices.length*e+8},D.prototype.allowKeyEventPropagation=function(e){var t={row:this.htEditor.getSelectedRange()?this.htEditor.getSelectedRange().from.row:-1},n=!1;return e===h.ARROW_DOWN&&t.row>0&&t.row<this.htEditor.countRows()-1&&(n=!0),e===h.ARROW_UP&&t.row>-1&&(n=!0),n},D.prototype.discardEditor=function(e){x.prototype.discardEditor.apply(this,arguments),this.instance.view.render()},k("autocomplete",D)},{editors:30,handsontableEditor:36,"helpers/array":43,"helpers/dom/element":47,"helpers/mixed":51,"helpers/string":55,"helpers/unicode":56}],33:[function(e,t,n){"use strict";Object.defineProperties(n,{CheckboxEditor:{get:function(){return u}},__esModule:{value:!0}});var o,r,i,s=(o=e("editors"),o&&o.__esModule&&o||{default:o}).registerEditor,a=(r=e("_baseEditor"),r&&r.__esModule&&r||{default:r}).BaseEditor,l=(i=e("helpers/dom/element"),i&&i.__esModule&&i||{default:i}).hasClass,u=function(){$traceurRuntime.superConstructor(c).apply(this,arguments)},c=u;$traceurRuntime.createClass(u,{beginEditing:function(e,t){if(void 0===t){var n=this.TD.querySelector('input[type="checkbox"]');l(n,"htBadValue")||n.click()}},finishEditing:function(){},init:function(){},open:function(){},close:function(){},getValue:function(){},setValue:function(){},focus:function(){}},{},a),s("checkbox",u)},{_baseEditor:31,editors:30,"helpers/dom/element":47}],34:[function(e,t,n){"use strict";Object.defineProperties(n,{DateEditor:{get:function(){return E}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d,h,f=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,p=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),m=p.addClass,g=p.outerHeight,w=(i=e("helpers/object"),i&&i.__esModule&&i||{default:i}).deepExtend,v=(s=e("eventManager"),s&&s.__esModule&&s||{default:s}).EventManager,y=(a=e("editors"),a&&a.__esModule&&a||{default:a}),b=(y.getEditor,y.registerEditor),C=(l=e("helpers/unicode"),l&&l.__esModule&&l||{default:l}).isMetaKey,_=(u=e("helpers/dom/event"),u&&u.__esModule&&u||{default:u}).stopPropagation,R=(c=e("textEditor"),c&&c.__esModule&&c||{default:c}).TextEditor,M=(d=e("moment"),d&&d.__esModule&&d||{default:d}).default,S=(h=e("pikaday"),h&&h.__esModule&&h||{default:h}).default,E=function(e){this.$datePicker=null,this.datePicker=null,this.datePickerStyle=null,this.defaultDateFormat="DD/MM/YYYY",this.isCellEdited=!1,this.parentDestroyed=!1,$traceurRuntime.superConstructor(O).call(this,e)},O=E;$traceurRuntime.createClass(E,{init:function(){var e=this;if("function"!=typeof M)throw new Error("You need to include moment.js to your project.");if("function"!=typeof S)throw new Error("You need to include Pikaday to your project.");$traceurRuntime.superGet(this,O.prototype,"init").call(this),this.instance.addHook("afterDestroy",function(){e.parentDestroyed=!0,e.destroyElements()})},createElements:function(){$traceurRuntime.superGet(this,O.prototype,"createElements").call(this),this.datePicker=document.createElement("DIV"),this.datePickerStyle=this.datePicker.style,this.datePickerStyle.position="absolute",this.datePickerStyle.top=0,this.datePickerStyle.left=0,this.datePickerStyle.zIndex=9999,m(this.datePicker,"htDatepickerHolder"),document.body.appendChild(this.datePicker),this.$datePicker=new S(this.getDatePickerConfig());var e=new v(this);e.addEventListener(this.datePicker,"mousedown",function(e){return _(e)}),this.hideDatepicker()},destroyElements:function(){this.$datePicker.destroy()},prepare:function(e,t,n,o,r,i){this._opened=!1,$traceurRuntime.superGet(this,O.prototype,"prepare").call(this,e,t,n,o,r,i)},open:function(){var e=void 0!==arguments[0]?arguments[0]:null;$traceurRuntime.superGet(this,O.prototype,"open").call(this),this.showDatepicker(e)},close:function(){var e=this;this._opened=!1,this.instance._registerTimeout(setTimeout(function(){e.instance.selection.refreshBorders()},0)),$traceurRuntime.superGet(this,O.prototype,"close").call(this)},finishEditing:function(){var e=void 0!==arguments[0]&&arguments[0],t=void 0!==arguments[1]&&arguments[1];if(e){var n=this.originalValue;void 0!==n&&this.setValue(n)}this.hideDatepicker(),$traceurRuntime.superGet(this,O.prototype,"finishEditing").call(this,e,t)},showDatepicker:function(e){this.$datePicker.config(this.getDatePickerConfig());var t,n=this.TD.getBoundingClientRect(),o=this.cellProperties.dateFormat||this.defaultDateFormat,r=this.$datePicker.config(),i=this.instance.view.isMouseDown(),s=!!e&&C(e.keyCode);this.datePickerStyle.top=window.pageYOffset+n.top+g(this.TD)+"px",this.datePickerStyle.left=window.pageXOffset+n.left+"px",this.$datePicker._onInputFocus=function(){},r.format=o,this.originalValue?(t=this.originalValue,M(t,o,!0).isValid()&&this.$datePicker.setMoment(M(t,o),!0),this.getValue()!==this.originalValue&&this.setValue(this.originalValue),s||i||this.setValue("")):this.cellProperties.defaultDate?(t=this.cellProperties.defaultDate,r.defaultDate=t,M(t,o,!0).isValid()&&this.$datePicker.setMoment(M(t,o),!0),s||i||this.setValue("")):this.$datePicker.gotoToday(),this.datePickerStyle.display="block",this.$datePicker.show()},hideDatepicker:function(){this.datePickerStyle.display="none",this.$datePicker.hide()},getDatePickerConfig:function(){var e=this,t=this.TEXTAREA,n={};this.cellProperties&&this.cellProperties.datePickerConfig&&w(n,this.cellProperties.datePickerConfig);var o=n.onSelect,r=n.onClose;return n.field=t,n.trigger=t,n.container=this.datePicker,n.bound=!1,n.format=n.format||this.defaultDateFormat,n.reposition=n.reposition||!1,n.onSelect=function(t){isNaN(t.getTime())||(t=M(t).format(e.cellProperties.dateFormat||e.defaultDateFormat)),e.setValue(t),e.hideDatepicker(),o&&o()},n.onClose=function(){e.parentDestroyed||e.finishEditing(!1),r&&r()},n}},{},R),f.editors=f.editors||{},f.editors.DateEditor=E,b("date",E)},{browser:24,editors:30,eventManager:42,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/object":53,"helpers/unicode":56,moment:"moment",pikaday:"pikaday",textEditor:41}],35:[function(e,t,n){"use strict";Object.defineProperties(n,{DropdownEditor:{get:function(){return c}},__esModule:{value:!0}});var o,r,i,s=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,a=(r=e("editors"),r&&r.__esModule&&r||{default:r}),l=(a.getEditor,a.registerEditor),u=(a.getEditorConstructor,(i=e("autocompleteEditor"),i&&i.__esModule&&i||{default:i}).AutocompleteEditor),c=function(){$traceurRuntime.superConstructor(d).apply(this,arguments)},d=c;$traceurRuntime.createClass(c,{prepare:function(e,t,n,o,r,i){$traceurRuntime.superGet(this,d.prototype,"prepare").call(this,e,t,n,o,r,i),this.cellProperties.filter=!1,this.cellProperties.strict=!0}},{},u),s.hooks.add("beforeValidate",function(e,t,n,o){var r=this.getCellMeta(t,this.propToCol(n));r.editor===s.editors.DropdownEditor&&void 0===r.strict&&(r.filter=!1,r.strict=!0)}),l("dropdown",c)},{autocompleteEditor:32,browser:24,editors:30}],36:[function(e,t,n){"use strict";Object.defineProperties(n,{HandsontableEditor:{get:function(){return b}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,d=(r=e("helpers/unicode"),r&&r.__esModule&&r||{default:r}).KEY_CODES,h=(i=e("helpers/object"),i&&i.__esModule&&i||{default:i}).extend,f=(s=e("helpers/dom/element"),s&&s.__esModule&&s||{default:s}).setCaretPosition,p=(a=e("helpers/dom/event"),a&&a.__esModule&&a||{default:a}),m=p.stopImmediatePropagation,g=p.isImmediatePropagationStopped,w=(l=e("editors"),l&&l.__esModule&&l||{default:l}),v=(w.getEditor,w.registerEditor),y=(u=e("textEditor"),u&&u.__esModule&&u||{default:u}).TextEditor,b=y.prototype.extend();b.prototype.createElements=function(){y.prototype.createElements.apply(this,arguments);var e=document.createElement("DIV");e.className="handsontableEditor",this.TEXTAREA_PARENT.appendChild(e),this.htContainer=e,this.assignHooks()},b.prototype.prepare=function(e,t,n,o,r,i){y.prototype.prepare.apply(this,arguments);var s=this,a={startRows:0,startCols:0,minRows:0,minCols:0,className:"listbox",copyPaste:!1,autoColumnSize:!1,autoRowSize:!1,readOnly:!0,fillHandle:!1,afterOnCellMouseDown:function(){var e=this.getValue();void 0!==e&&s.setValue(e),s.instance.destroyEditor()}};this.cellProperties.handsontable&&h(a,i.handsontable),this.htOptions=a};var C=function(e){if(!g(e)){var t,n=this.getActiveEditor(),o=n.htEditor.getInstance();if(e.keyCode==d.ARROW_DOWN)if(o.getSelected()||o.flipped){if(o.getSelected())if(o.flipped)t=o.getSelected()[0]+1;else if(!o.flipped){var r=o.getSelected()[0],i=o.countRows()-1;t=Math.min(i,r+1)}}else t=0;else if(e.keyCode==d.ARROW_UP)if(!o.getSelected()&&o.flipped)t=o.countRows()-1;else if(o.getSelected())if(o.flipped){var r=o.getSelected()[0];t=Math.max(0,r-1)}else{var r=o.getSelected()[0];t=r-1}void 0!==t&&(t<0||o.flipped&&t>o.countRows()-1?o.deselectCell():o.selectCell(t,0),o.getData().length&&(e.preventDefault(),m(e),n.instance.listen(),n.TEXTAREA.focus()))}};b.prototype.open=function(){this.instance.addHook("beforeKeyDown",C),y.prototype.open.apply(this,arguments),this.htEditor&&this.htEditor.destroy(),this.htEditor=new c(this.htContainer,this.htOptions),this.cellProperties.strict?(this.htEditor.selectCell(0,0),this.TEXTAREA.style.visibility="hidden"):(this.htEditor.deselectCell(),this.TEXTAREA.style.visibility="visible"),f(this.TEXTAREA,0,this.TEXTAREA.value.length)},b.prototype.close=function(){this.instance.removeHook("beforeKeyDown",C),this.instance.listen(),y.prototype.close.apply(this,arguments)},b.prototype.focus=function(){this.instance.listen(),y.prototype.focus.apply(this,arguments)},b.prototype.beginEditing=function(e){var t=this.instance.getSettings().onBeginEditing;t&&t()===!1||y.prototype.beginEditing.apply(this,arguments)},b.prototype.finishEditing=function(e,t){if(this.htEditor&&this.htEditor.isListening()&&this.instance.listen(),this.htEditor&&this.htEditor.getSelected()){var n=this.htEditor.getInstance().getValue();void 0!==n&&this.setValue(n)}return y.prototype.finishEditing.apply(this,arguments)},b.prototype.assignHooks=function(){var e=this;this.instance.addHook("afterDestroy",function(){e.htEditor&&e.htEditor.destroy()})},v("handsontable",b)},{browser:24,editors:30,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/object":53,"helpers/unicode":56,textEditor:41}],37:[function(e,t,n){"use strict";Object.defineProperties(n,{MobileTextEditor:{get:function(){return k}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c=((o=e("browser"),o&&o.__esModule&&o||{default:o}).default,(r=e("helpers/unicode"),r&&r.__esModule&&r||{default:r}).KEY_CODES),d=(i=e("helpers/dom/event"),i&&i.__esModule&&i||{default:i}),h=d.stopImmediatePropagation,f=d.isImmediatePropagationStopped,p=(s=e("helpers/dom/element"),s&&s.__esModule&&s||{default:s}),m=p.addClass,g=p.getScrollLeft,w=p.getScrollTop,v=p.hasClass,y=p.isChildOf,b=p.offset,C=p.outerHeight,_=p.outerWidth,R=p.removeClass,M=p.setCaretPosition,S=(a=e("editors"),a&&a.__esModule&&a||{default:a}),E=(S.getEditor,S.registerEditor),O=(l=e("_baseEditor"),l&&l.__esModule&&l||{default:l}).BaseEditor,T=(u=e("eventManager"),u&&u.__esModule&&u||{default:u}).eventManager,k=O.prototype.extend(),x={},D=function(){this.controls={},this.controls.leftButton=document.createElement("DIV"),this.controls.leftButton.className="leftButton",this.controls.rightButton=document.createElement("DIV"),this.controls.rightButton.className="rightButton",this.controls.upButton=document.createElement("DIV"),this.controls.upButton.className="upButton",this.controls.downButton=document.createElement("DIV"),this.controls.downButton.className="downButton";for(var e in this.controls)this.controls.hasOwnProperty(e)&&this.positionControls.appendChild(this.controls[e])};k.prototype.valueChanged=function(){return this.initValue!=this.getValue()},k.prototype.init=function(){var e=this;this.eventManager=T(this.instance),this.createElements(),this.bindEvents(),this.instance.addHook("afterDestroy",function(){e.destroy()})},k.prototype.getValue=function(){return this.TEXTAREA.value},k.prototype.setValue=function(e){this.initValue=e,this.TEXTAREA.value=e},k.prototype.createElements=function(){this.editorContainer=document.createElement("DIV"),this.editorContainer.className="htMobileEditorContainer",this.cellPointer=document.createElement("DIV"),this.cellPointer.className="cellPointer",this.moveHandle=document.createElement("DIV"),this.moveHandle.className="moveHandle",this.inputPane=document.createElement("DIV"),this.inputPane.className="inputs",this.positionControls=document.createElement("DIV"),this.positionControls.className="positionControls",this.TEXTAREA=document.createElement("TEXTAREA"),m(this.TEXTAREA,"handsontableInput"),this.inputPane.appendChild(this.TEXTAREA),this.editorContainer.appendChild(this.cellPointer),this.editorContainer.appendChild(this.moveHandle),this.editorContainer.appendChild(this.inputPane),this.editorContainer.appendChild(this.positionControls),D.call(this),document.body.appendChild(this.editorContainer)},k.prototype.onBeforeKeyDown=function(e){var t=this,n=t.getActiveEditor();if(e.target===n.TEXTAREA&&!f(e))switch(e.keyCode){case c.ENTER:n.close(),e.preventDefault();break;case c.BACKSPACE:h(e)}},k.prototype.open=function(){this.instance.addHook("beforeKeyDown",this.onBeforeKeyDown),m(this.editorContainer,"active"),R(this.cellPointer,"hidden"),this.updateEditorPosition()},k.prototype.focus=function(){this.TEXTAREA.focus(),M(this.TEXTAREA,this.TEXTAREA.value.length)},k.prototype.close=function(){this.TEXTAREA.blur(),this.instance.removeHook("beforeKeyDown",this.onBeforeKeyDown),R(this.editorContainer,"active")},k.prototype.scrollToView=function(){var e=this.instance.getSelectedRange().highlight;this.instance.view.scrollViewport(e)},k.prototype.hideCellPointer=function(){v(this.cellPointer,"hidden")||m(this.cellPointer,"hidden")},k.prototype.updateEditorPosition=function(e,t){if(e&&t)e=parseInt(e,10),t=parseInt(t,10),this.editorContainer.style.top=t+"px",this.editorContainer.style.left=e+"px";else{var n=this.instance.getSelected(),o=this.instance.getCell(n[0],n[1]);if(x.cellPointer||(x.cellPointer={height:C(this.cellPointer),width:_(this.cellPointer)}),x.editorContainer||(x.editorContainer={width:_(this.editorContainer)}),void 0!==o){var r=this.instance.view.wt.wtOverlays.leftOverlay.trimmingContainer==window?0:g(this.instance.view.wt.wtOverlays.leftOverlay.holder),i=this.instance.view.wt.wtOverlays.topOverlay.trimmingContainer==window?0:w(this.instance.view.wt.wtOverlays.topOverlay.holder),s=b(o),a=_(o),l={x:r,y:i};this.editorContainer.style.top=parseInt(s.top+C(o)-l.y+x.cellPointer.height,10)+"px",this.editorContainer.style.left=parseInt(window.innerWidth/2-x.editorContainer.width/2,10)+"px",s.left+a/2>parseInt(this.editorContainer.style.left,10)+x.editorContainer.width?this.editorContainer.style.left=window.innerWidth-x.editorContainer.width+"px":s.left+a/2<parseInt(this.editorContainer.style.left,10)+20&&(this.editorContainer.style.left="0px"),this.cellPointer.style.left=parseInt(s.left-x.cellPointer.width/2-b(this.editorContainer).left+a/2-l.x,10)+"px"}}},k.prototype.updateEditorData=function(){var e=this.instance.getSelected(),t=this.instance.getDataAtCell(e[0],e[1]);this.row=e[0],this.col=e[1],this.setValue(t),this.updateEditorPosition()},k.prototype.prepareAndSave=function(){var e;return!this.valueChanged()||(e=this.instance.getSettings().trimWhitespace?[[String.prototype.trim.call(this.getValue())]]:[[this.getValue()]],void this.saveValue(e))},k.prototype.bindEvents=function(){var e=this;this.eventManager.addEventListener(this.controls.leftButton,"touchend",function(t){e.prepareAndSave(),e.instance.selection.transformStart(0,-1,null,!0),e.updateEditorData(),t.preventDefault()}),this.eventManager.addEventListener(this.controls.rightButton,"touchend",function(t){e.prepareAndSave(),e.instance.selection.transformStart(0,1,null,!0),e.updateEditorData(),t.preventDefault()}),this.eventManager.addEventListener(this.controls.upButton,"touchend",function(t){e.prepareAndSave(),e.instance.selection.transformStart(-1,0,null,!0),e.updateEditorData(),t.preventDefault()}),this.eventManager.addEventListener(this.controls.downButton,"touchend",function(t){e.prepareAndSave(),e.instance.selection.transformStart(1,0,null,!0),e.updateEditorData(),t.preventDefault()}),this.eventManager.addEventListener(this.moveHandle,"touchstart",function(t){if(1==t.touches.length){var n=t.touches[0],o={x:e.editorContainer.offsetLeft,y:e.editorContainer.offsetTop},r={x:n.pageX-o.x,y:n.pageY-o.y};e.eventManager.addEventListener(this,"touchmove",function(t){var n=t.touches[0];e.updateEditorPosition(n.pageX-r.x,n.pageY-r.y),e.hideCellPointer(),t.preventDefault()})}}),this.eventManager.addEventListener(document.body,"touchend",function(t){y(t.target,e.editorContainer)||y(t.target,e.instance.rootElement)||e.close()}),this.eventManager.addEventListener(this.instance.view.wt.wtOverlays.leftOverlay.holder,"scroll",function(t){e.instance.view.wt.wtOverlays.leftOverlay.trimmingContainer!=window&&e.hideCellPointer()}),this.eventManager.addEventListener(this.instance.view.wt.wtOverlays.topOverlay.holder,"scroll",function(t){e.instance.view.wt.wtOverlays.topOverlay.trimmingContainer!=window&&e.hideCellPointer()})},k.prototype.destroy=function(){this.eventManager.clear(),this.editorContainer.parentNode.removeChild(this.editorContainer)},E("mobile",k)},{_baseEditor:31,browser:24,editors:30,eventManager:42,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/unicode":56}],38:[function(e,t,n){"use strict";Object.defineProperties(n,{NumericEditor:{get:function(){return u}},__esModule:{value:!0}});var o,r,i,s=(o=e("numbro"),o&&o.__esModule&&o||{default:o}).default,a=(r=e("editors"),r&&r.__esModule&&r||{default:r}).registerEditor,l=(i=e("textEditor"),i&&i.__esModule&&i||{default:i}).TextEditor,u=function(){$traceurRuntime.superConstructor(c).apply(this,arguments)},c=u;$traceurRuntime.createClass(u,{beginEditing:function(e){if("undefined"==typeof e&&this.originalValue){"undefined"!=typeof this.cellProperties.language&&s.culture(this.cellProperties.language);var t=s.cultureData().delimiters.decimal;e=(""+this.originalValue).replace(".",t)}$traceurRuntime.superGet(this,c.prototype,"beginEditing").call(this,e)}},{},l),a("numeric",u)},{editors:30,numbro:"numbro",textEditor:41}],39:[function(e,t,n){"use strict";Object.defineProperties(n,{PasswordEditor:{get:function(){return d}},__esModule:{value:!0}});var o,r,i,s,a=((o=e("browser"),o&&o.__esModule&&o||{default:o}).default,(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}).empty),l=(i=e("editors"),i&&i.__esModule&&i||{default:i}),u=(l.getEditor,l.registerEditor),c=(s=e("textEditor"),s&&s.__esModule&&s||{default:s}).TextEditor,d=function(){$traceurRuntime.superConstructor(h).apply(this,arguments)},h=d;$traceurRuntime.createClass(d,{createElements:function(){$traceurRuntime.superGet(this,h.prototype,"createElements").call(this),this.TEXTAREA=document.createElement("input"),this.TEXTAREA.setAttribute("type","password"),this.TEXTAREA.className="handsontableInput",this.textareaStyle=this.TEXTAREA.style,this.textareaStyle.width=0,this.textareaStyle.height=0,a(this.TEXTAREA_PARENT),this.TEXTAREA_PARENT.appendChild(this.TEXTAREA)}},{},c),u("password",d)},{browser:24,editors:30,"helpers/dom/element":47,textEditor:41}],40:[function(e,t,n){"use strict";Object.defineProperties(n,{SelectEditor:{get:function(){return E}},__esModule:{value:!0}});var o,r,i,s,a,l,u=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,c=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),d=c.addClass,h=c.empty,f=c.fastInnerHTML,p=c.getComputedStyle,m=c.getCssTransform,g=c.getScrollableElement,w=c.offset,v=c.outerHeight,y=c.outerWidth,b=c.resetCssTransform,C=(i=e("helpers/dom/event"),i&&i.__esModule&&i||{default:i}).stopImmediatePropagation,_=(s=e("helpers/unicode"),s&&s.__esModule&&s||{default:s}).KEY_CODES,R=(a=e("editors"),a&&a.__esModule&&a||{default:a}),M=(R.getEditor,R.registerEditor),S=(l=e("_baseEditor"),l&&l.__esModule&&l||{default:l}).BaseEditor,E=S.prototype.extend();E.prototype.init=function(){this.select=document.createElement("SELECT"),d(this.select,"htSelectEditor"),this.select.style.display="none",this.instance.rootElement.appendChild(this.select),this.registerHooks()},E.prototype.registerHooks=function(){var e=this;this.instance.addHook("afterScrollHorizontally",function(){return e.refreshDimensions()}),this.instance.addHook("afterScrollVertically",function(){return e.refreshDimensions()}),this.instance.addHook("afterColumnResize",function(){return e.refreshDimensions()}),this.instance.addHook("afterRowResize",function(){return e.refreshDimensions()})},E.prototype.prepare=function(){S.prototype.prepare.apply(this,arguments);var e,t=this.cellProperties.selectOptions;e="function"==typeof t?this.prepareOptions(t(this.row,this.col,this.prop)):this.prepareOptions(t),h(this.select);for(var n in e)if(e.hasOwnProperty(n)){var o=document.createElement("OPTION");o.value=n,f(o,e[n]),this.select.appendChild(o)}},E.prototype.prepareOptions=function(e){var t={};if(Array.isArray(e))for(var n=0,o=e.length;n<o;n++)t[e[n]]=e[n];else"object"==typeof e&&(t=e);return t},E.prototype.getValue=function(){return this.select.value},E.prototype.setValue=function(e){this.select.value=e};var O=function(e){var t=this,n=t.getActiveEditor();switch(e.keyCode){case _.ARROW_UP:var o=n.select.selectedIndex-1;o>=0&&(n.select[o].selected=!0),C(e),e.preventDefault();break;case _.ARROW_DOWN:var r=n.select.selectedIndex+1;r<=n.select.length-1&&(n.select[r].selected=!0),C(e),e.preventDefault()}};E.prototype.open=function(){this._opened=!0,this.refreshDimensions(),this.select.style.display="",this.instance.addHook("beforeKeyDown",O)},E.prototype.close=function(){this._opened=!1,this.select.style.display="none",this.instance.removeHook("beforeKeyDown",O)},E.prototype.focus=function(){this.select.focus()},E.prototype.refreshValue=function(){var e=this.instance.getSourceDataAtCell(this.row,this.prop);this.originalValue=e,this.setValue(e),this.refreshDimensions()},E.prototype.refreshDimensions=function(){if(this.state===u.EditorState.EDITING){if(this.TD=this.getEditedCell(),!this.TD)return void this.close();var e,t=y(this.TD)+1,n=v(this.TD)+1,o=w(this.TD),r=w(this.instance.rootElement),i=g(this.TD),s=o.top-r.top-1-(i.scrollTop||0),a=o.left-r.left-1-(i.scrollLeft||0),l=this.checkEditorSection(),c=this.instance.getSettings();c.rowHeaders?1:0,c.colHeaders?1:0;switch(l){case"top":e=m(this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.holder.parentNode);break;case"left":e=m(this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.holder.parentNode);
break;case"top-left-corner":e=m(this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.holder.parentNode);break;case"bottom-left-corner":e=m(this.instance.view.wt.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.holder.parentNode);break;case"bottom":e=m(this.instance.view.wt.wtOverlays.bottomOverlay.clone.wtTable.holder.parentNode)}0===this.instance.getSelected()[0]&&(s+=1),0===this.instance.getSelected()[1]&&(a+=1);var d=this.select.style;e&&e!=-1?d[e[0]]=e[1]:b(this.select);var h=p(this.TD);parseInt(h.borderTopWidth,10)>0&&(n-=1),parseInt(h.borderLeftWidth,10)>0&&(t-=1),d.height=n+"px",d.minWidth=t+"px",d.top=s+"px",d.left=a+"px",d.margin="0px"}},E.prototype.getEditedCell=function(){var e,t=this.checkEditorSection();switch(t){case"top":e=this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.getCell({row:this.row,col:this.col}),this.select.style.zIndex=101;break;case"corner":e=this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.getCell({row:this.row,col:this.col}),this.select.style.zIndex=103;break;case"left":e=this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.getCell({row:this.row,col:this.col}),this.select.style.zIndex=102;break;default:e=this.instance.getCell(this.row,this.col),this.select.style.zIndex=""}return e!=-1&&e!=-2?e:void 0},M("select",E)},{_baseEditor:31,browser:24,editors:30,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/unicode":56}],41:[function(e,t,n){"use strict";Object.defineProperties(n,{TextEditor:{get:function(){return N}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,h=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),f=h.addClass,p=h.getCaretPosition,m=h.getComputedStyle,g=h.getCssTransform,w=h.getScrollableElement,v=h.getScrollbarWidth,y=h.innerWidth,b=h.offset,C=h.resetCssTransform,_=h.setCaretPosition,R=h.hasVerticalScrollbar,M=h.hasHorizontalScrollbar,S=(i=e("autoResize"),i&&i.__esModule&&i||{default:i}).default,E=(s=e("_baseEditor"),s&&s.__esModule&&s||{default:s}).BaseEditor,O=(a=e("eventManager"),a&&a.__esModule&&a||{default:a}).eventManager,T=(l=e("editors"),l&&l.__esModule&&l||{default:l}),k=(T.getEditor,T.registerEditor),x=(u=e("helpers/unicode"),u&&u.__esModule&&u||{default:u}).KEY_CODES,D=(c=e("helpers/dom/event"),c&&c.__esModule&&c||{default:c}),H=D.stopPropagation,A=D.stopImmediatePropagation,P=D.isImmediatePropagationStopped,N=E.prototype.extend();N.prototype.init=function(){var e=this;this.createElements(),this.eventManager=O(this),this.bindEvents(),this.autoResize=S(),this.instance.addHook("afterDestroy",function(){e.destroy()})},N.prototype.getValue=function(){return this.TEXTAREA.value},N.prototype.setValue=function(e){this.TEXTAREA.value=e};var L=function(e){var t,n=this,o=n.getActiveEditor();if(t=(e.ctrlKey||e.metaKey)&&!e.altKey,e.target===o.TEXTAREA&&!P(e)){if(17===e.keyCode||224===e.keyCode||91===e.keyCode||93===e.keyCode)return void A(e);switch(e.keyCode){case x.ARROW_RIGHT:o.isInFullEditMode()&&(!o.isWaiting()&&!o.allowKeyEventPropagation||!o.isWaiting()&&o.allowKeyEventPropagation&&!o.allowKeyEventPropagation(e.keyCode))&&A(e);break;case x.ARROW_LEFT:o.isInFullEditMode()&&(!o.isWaiting()&&!o.allowKeyEventPropagation||!o.isWaiting()&&o.allowKeyEventPropagation&&!o.allowKeyEventPropagation(e.keyCode))&&A(e);break;case x.ARROW_UP:case x.ARROW_DOWN:o.isInFullEditMode()&&(!o.isWaiting()&&!o.allowKeyEventPropagation||!o.isWaiting()&&o.allowKeyEventPropagation&&!o.allowKeyEventPropagation(e.keyCode))&&A(e);break;case x.ENTER:var r=o.instance.getSelected(),i=!(r[0]===r[2]&&r[1]===r[3]);if(t&&!i||e.altKey){if(o.isOpened()){var s=p(o.TEXTAREA),a=o.getValue(),l=a.slice(0,s)+"\n"+a.slice(s);o.setValue(l),_(o.TEXTAREA,s+1)}else o.beginEditing(o.originalValue+"\n");A(e)}e.preventDefault();break;case x.A:case x.X:case x.C:case x.V:t&&A(e);break;case x.BACKSPACE:case x.DELETE:case x.HOME:case x.END:A(e)}[x.ARROW_UP,x.ARROW_RIGHT,x.ARROW_DOWN,x.ARROW_LEFT].indexOf(e.keyCode)===-1&&o.autoResize.resize(String.fromCharCode(e.keyCode))}};N.prototype.open=function(){this.refreshDimensions(),this.instance.addHook("beforeKeyDown",L)},N.prototype.close=function(e){this.textareaParentStyle.display="none",this.autoResize.unObserve(),document.activeElement===this.TEXTAREA&&this.instance.listen(),this.instance.removeHook("beforeKeyDown",L)},N.prototype.focus=function(){this.TEXTAREA.focus(),_(this.TEXTAREA,this.TEXTAREA.value.length)},N.prototype.createElements=function(){this.TEXTAREA=document.createElement("TEXTAREA"),f(this.TEXTAREA,"handsontableInput"),this.textareaStyle=this.TEXTAREA.style,this.textareaStyle.width=0,this.textareaStyle.height=0,this.TEXTAREA_PARENT=document.createElement("DIV"),f(this.TEXTAREA_PARENT,"handsontableInputHolder"),this.textareaParentStyle=this.TEXTAREA_PARENT.style,this.textareaParentStyle.top=0,this.textareaParentStyle.left=0,this.textareaParentStyle.display="none",this.TEXTAREA_PARENT.appendChild(this.TEXTAREA),this.instance.rootElement.appendChild(this.TEXTAREA_PARENT);var e=this;this.instance._registerTimeout(setTimeout(function(){e.refreshDimensions()},0))},N.prototype.getEditedCell=function(){var e,t=this.checkEditorSection();switch(t){case"top":e=this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.getCell({row:this.row,col:this.col}),this.textareaParentStyle.zIndex=101;break;case"top-left-corner":e=this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.getCell({row:this.row,col:this.col}),this.textareaParentStyle.zIndex=103;break;case"bottom-left-corner":e=this.instance.view.wt.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.getCell({row:this.row,col:this.col}),this.textareaParentStyle.zIndex=103;break;case"left":e=this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.getCell({row:this.row,col:this.col}),this.textareaParentStyle.zIndex=102;break;case"bottom":e=this.instance.view.wt.wtOverlays.bottomOverlay.clone.wtTable.getCell({row:this.row,col:this.col}),this.textareaParentStyle.zIndex=102;break;default:e=this.instance.getCell(this.row,this.col),this.textareaParentStyle.zIndex=""}return e!=-1&&e!=-2?e:void 0},N.prototype.refreshValue=function(){var e=this.instance.getSourceDataAtCell(this.row,this.prop);this.originalValue=e,this.setValue(e),this.refreshDimensions()},N.prototype.refreshDimensions=function(){if(this.state===d.EditorState.EDITING){if(this.TD=this.getEditedCell(),!this.TD)return void this.close(!0);var e,t=b(this.TD),n=b(this.instance.rootElement),o=w(this.TD),r=this.instance.countRows(),i=t.top===n.top?0:1,s=t.top-n.top-i-(o.scrollTop||0),a=t.left-n.left-1-(o.scrollLeft||0),l=this.instance.getSettings(),u=(this.instance.hasRowHeaders(),this.instance.hasColHeaders()),c=this.checkEditorSection(),h=this.TD.style.backgroundColor;switch(c){case"top":e=g(this.instance.view.wt.wtOverlays.topOverlay.clone.wtTable.holder.parentNode);break;case"left":e=g(this.instance.view.wt.wtOverlays.leftOverlay.clone.wtTable.holder.parentNode);break;case"top-left-corner":e=g(this.instance.view.wt.wtOverlays.topLeftCornerOverlay.clone.wtTable.holder.parentNode);break;case"bottom-left-corner":e=g(this.instance.view.wt.wtOverlays.bottomLeftCornerOverlay.clone.wtTable.holder.parentNode);break;case"bottom":e=g(this.instance.view.wt.wtOverlays.bottomOverlay.clone.wtTable.holder.parentNode)}(u&&0===this.instance.getSelected()[0]||l.fixedRowsBottom&&this.instance.getSelected()[0]===r-l.fixedRowsBottom)&&(s+=1),0===this.instance.getSelected()[1]&&(a+=1),e&&e!=-1?this.textareaParentStyle[e[0]]=e[1]:C(this.TEXTAREA_PARENT),this.textareaParentStyle.top=s+"px",this.textareaParentStyle.left=a+"px";var f=this.instance.view.wt.wtViewport.rowsRenderCalculator.startPosition,p=this.instance.view.wt.wtViewport.columnsRenderCalculator.startPosition,_=this.instance.view.wt.wtOverlays.leftOverlay.getScrollPosition(),S=this.instance.view.wt.wtOverlays.topOverlay.getScrollPosition(),E=v(),O=this.TD.offsetTop+f-S,T=this.TD.offsetLeft+p-_,k=y(this.TD)-8,x=R(o)?E:0,D=M(o)?E:0,H=this.instance.view.maximumVisibleElementWidth(T)-9-x,A=this.TD.scrollHeight+1,P=Math.max(this.instance.view.maximumVisibleElementHeight(O)-D,23),N=m(this.TD);this.TEXTAREA.style.fontSize=N.fontSize,this.TEXTAREA.style.fontFamily=N.fontFamily,this.TEXTAREA.style.backgroundColor="",this.TEXTAREA.style.backgroundColor=h?h:m(this.TEXTAREA).backgroundColor,this.autoResize.init(this.TEXTAREA,{minHeight:Math.min(A,P),maxHeight:P,minWidth:Math.min(k,H),maxWidth:H},!0),this.textareaParentStyle.display="block"}},N.prototype.bindEvents=function(){var e=this;this.eventManager.addEventListener(this.TEXTAREA,"cut",function(e){H(e)}),this.eventManager.addEventListener(this.TEXTAREA,"paste",function(e){H(e)}),this.instance.addHook("afterScrollHorizontally",function(){e.refreshDimensions()}),this.instance.addHook("afterScrollVertically",function(){e.refreshDimensions()}),this.instance.addHook("afterColumnResize",function(){e.refreshDimensions(),e.focus()}),this.instance.addHook("afterRowResize",function(){e.refreshDimensions(),e.focus()}),this.instance.addHook("afterDestroy",function(){e.eventManager.destroy()})},N.prototype.destroy=function(){this.eventManager.destroy()},k("text",N)},{_baseEditor:31,autoResize:"autoResize",browser:24,editors:30,eventManager:42,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/unicode":56}],42:[function(e,t,n){"use strict";function o(e,t){var n,o,r,i,s,a,l="HOT-TABLE";if(t.isTargetWebComponent=!1,t.realTarget=t.target,a=t.stopImmediatePropagation,t.stopImmediatePropagation=function(){a.apply(this),p(this)},!u.eventManager.isHotTableEnv)return t;for(t=d(t),s=t.path?t.path.length:0;s--;){if(t.path[s].nodeName===l)n=!0;else if(n&&t.path[s].shadowRoot){i=t.path[s];break}0!==s||i||(i=t.path[s])}return i||(i=t.target),t.isTargetWebComponent=!0,f()?t.realTarget=t.srcElement||t.toElement:(e instanceof u.Core||e instanceof Walkontable)&&(e instanceof u.Core?o=e.view?e.view.wt.wtTable.TABLE:null:e instanceof Walkontable&&(o=e.wtTable.TABLE.parentNode.parentNode),r=h(t.target,[l],o),r?t.realTarget=o.querySelector(l)||t.target:t.realTarget=t.target),Object.defineProperty(t,"target",{get:function(){return d(i)},enumerable:!0,configurable:!0}),t}function r(e){return new m(e)}Object.defineProperties(n,{EventManager:{get:function(){return m}},eventManager:{get:function(){return r}},__esModule:{value:!0}});var i,s,a,l,u=(i=e("browser"),i&&i.__esModule&&i||{default:i}).default,c=(s=e("helpers/dom/element"),s&&s.__esModule&&s||{default:s}),d=c.polymerWrap,h=c.closest,f=(a=e("helpers/feature"),a&&a.__esModule&&a||{default:a}).isWebComponentSupportedNatively,p=(l=e("helpers/dom/event"),l&&l.__esModule&&l||{default:l}).stopImmediatePropagation,m=function(){var e=void 0!==arguments[0]?arguments[0]:null;this.context=e||this,this.context.eventListeners||(this.context.eventListeners=[])};$traceurRuntime.createClass(m,{addEventListener:function(e,t,n){function r(e){e=o(s,e),n.call(this,e)}var i=this,s=this.context;return this.context.eventListeners.push({element:e,event:t,callback:n,callbackProxy:r}),window.addEventListener?e.addEventListener(t,r,!1):e.attachEvent("on"+t,r),u.countEventManagerListeners++,function(){i.removeEventListener(e,t,n)}},removeEventListener:function(e,t,n){for(var o,r=this.context.eventListeners.length;r--;)if(o=this.context.eventListeners[r],o.event==t&&o.element==e){if(n&&n!=o.callback)continue;this.context.eventListeners.splice(r,1),o.element.removeEventListener?o.element.removeEventListener(o.event,o.callbackProxy,!1):o.element.detachEvent("on"+o.event,o.callbackProxy),u.countEventManagerListeners--}},clearEvents:function(){if(this.context)for(var e=this.context.eventListeners.length;e--;){var t=this.context.eventListeners[e];t&&this.removeEventListener(t.element,t.event,t.callback)}},clear:function(){this.clearEvents()},destroy:function(){this.clearEvents(),this.context=null},fireEvent:function(e,t){var n,o={bubbles:!0,cancelable:"mousemove"!==t,view:window,detail:0,screenX:0,screenY:0,clientX:1,clientY:1,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:void 0};document.createEvent?(n=document.createEvent("MouseEvents"),n.initMouseEvent(t,o.bubbles,o.cancelable,o.view,o.detail,o.screenX,o.screenY,o.clientX,o.clientY,o.ctrlKey,o.altKey,o.shiftKey,o.metaKey,o.button,o.relatedTarget||document.body.parentNode)):n=document.createEventObject(),e.dispatchEvent?e.dispatchEvent(n):e.fireEvent("on"+t,n)}},{}),u.countEventManagerListeners=0,u.eventManager=r},{browser:24,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/feature":49}],43:[function(e,t,n){"use strict";function o(e){for(var t=0,n=e.length;t<n;)e[t]=[e[t]],t++}function r(e,t){for(var n=0,o=t.length;n<o;)e.push(t[n]),n++}function i(e){var t=[];if(!e||0===e.length||!e[0]||0===e[0].length)return t;for(var n=e.length,o=e[0].length,r=0;r<n;r++)for(var i=0;i<o;i++)t[i]||(t[i]=[]),t[i][r]=e[r][i];return t}function s(e,t,n,o){var r=-1,i=e.length;for(o&&i&&(n=e[++r]);++r<i;)n=t(n,e[r],r,e);return n}function a(e,t){for(var n=-1,o=e.length,r=-1,i=[];++n<o;){var s=e[n];t(s,n,e)&&(i[++r]=s)}return i}function l(e,t){for(var n=-1,o=e.length,r=-1,i=[];++n<o;){var s=e[n];i[++r]=t(s,n,e)}return i}function u(e,t){for(var n=-1,o=e.length;++n<o&&t(e[n],n,e)!==!1;);return e}function c(e){return s(e,function(e,t){return e+t},0)}function d(e){return s(e,function(e,t){return e>t?e:t},Array.isArray(e)?e[0]:void 0)}function h(e){return s(e,function(e,t){return e<t?e:t},Array.isArray(e)?e[0]:void 0)}function f(e){return e.length?c(e)/e.length:0}function p(e){return s(e,function(e,t){return e.concat(Array.isArray(t)?p(t):t)},[])}function m(e){var t=[];return u(e,function(e){t.indexOf(e)===-1&&t.push(e)}),t}function g(e,t,n){if(null==e)throw new TypeError('"array" is null or not defined');var o=Object(e),r=o.length>>>0;if(0===r)return!1;for(var i=0|n,s=Math.max(i>=0?i:r-Math.abs(i),0);s<r;){if(o[s]===t)return!0;s++}return!1}Object.defineProperties(n,{to2dArray:{get:function(){return o}},extendArray:{get:function(){return r}},pivot:{get:function(){return i}},arrayReduce:{get:function(){return s}},arrayFilter:{get:function(){return a}},arrayMap:{get:function(){return l}},arrayEach:{get:function(){return u}},arraySum:{get:function(){return c}},arrayMax:{get:function(){return d}},arrayMin:{get:function(){return h}},arrayAvg:{get:function(){return f}},arrayFlatten:{get:function(){return p}},arrayUnique:{get:function(){return m}},arrayIncludes:{get:function(){return g}},__esModule:{value:!0}})},{}],44:[function(e,t,n){"use strict";function o(){return l}function r(){return u}function i(){return c}function s(){return d}function a(e){return e||(e=navigator.userAgent),/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(e)}Object.defineProperties(n,{isIE8:{get:function(){return o}},isIE9:{get:function(){return r}},isSafari:{get:function(){return i}},isChrome:{get:function(){return s}},isMobileBrowser:{get:function(){return a}},__esModule:{value:!0}});var l=!document.createTextNode("test").textContent,u=!!document.documentMode,c=/Safari/.test(navigator.userAgent)&&/Apple Computer/.test(navigator.vendor),d=/Chrome/.test(navigator.userAgent)&&/Google/.test(navigator.vendor)},{}],45:[function(e,t,n){"use strict";function o(e){for(var t,n=e+1,o="";n>0;)t=(n-1)%m,o=String.fromCharCode(65+t)+o,n=parseInt((n-t)/m,10);return o}function r(e){var t=0;if(e)for(var n=0,o=e.length-1;n<e.length;n+=1,o-=1)t+=Math.pow(m,o)*(p.indexOf(e[n])+1);return--t,t}function i(){var e,t,n=void 0!==arguments[0]?arguments[0]:100,r=void 0!==arguments[1]?arguments[1]:4,i=[];for(e=0;e<n;e++){var s=[];for(t=0;t<r;t++)s.push(o(t)+(e+1));i.push(s)}return i}function s(){var e,t,n=void 0!==arguments[0]?arguments[0]:100,r=void 0!==arguments[1]?arguments[1]:4,i=[];for(e=0;e<n;e++){var s={};for(t=0;t<r;t++)s["prop"+t]=o(t)+(e+1);i.push(s)}return i}function a(e,t){for(var n,o=[],r=0;r<e;r++){n=[];for(var i=0;i<t;i++)n.push("");o.push(n)}return o}function l(e){var t,n,o,r,i=[],s=0;for(t=0,n=e.length;t<n;t++)for(o=0,r=e[t].length;o<r;o++)o==s&&(i.push([]),s++),i[o].push(e[t][o]);return i}function u(e,t){function n(e){var t=h.cellTypes[e];if("undefined"==typeof t)throw new Error('You declared cell type "'+e+'" as a string that is not mapped to a known object. Cell type must be an object or a string mapped to an object in Handsontable.cellTypes');return t}return t="undefined"==typeof t||t,function(o,r){return function o(r){if(r){if(r.hasOwnProperty(e)&&void 0!==r[e])return r[e];if(r.hasOwnProperty("type")&&r.type){var i;if("string"!=typeof r.type)throw new Error("Cell type must be a string ");if(i=n(r.type),i.hasOwnProperty(e))return i[e];if(t)return}return o(f(r))}}("number"==typeof o?this.getCellMeta(o,r):o)}}Object.defineProperties(n,{spreadsheetColumnLabel:{get:function(){return o}},spreadsheetColumnIndex:{get:function(){return r}},createSpreadsheetData:{get:function(){return i}},createSpreadsheetObjectData:{get:function(){return s}},createEmptySpreadsheetData:{get:function(){return a}},translateRowsToColumns:{get:function(){return l}},cellMethodLookupFactory:{get:function(){return u}},__esModule:{value:!0}});var c,d,h=(c=e("browser"),c&&c.__esModule&&c||{default:c}).default,f=(d=e("object"),d&&d.__esModule&&d||{default:d}).getPrototypeOf,p="ABCDEFGHIJKLMNOPQRSTUVWXYZ",m=p.length},{browser:24,object:53}],46:[function(e,t,n){"use strict";function o(e){var t=new Date(e);return isNaN(new Date(e+"T00:00").getDate())?t:new Date(t.getTime()+6e4*t.getTimezoneOffset())}Object.defineProperties(n,{getNormalizedDate:{get:function(){return o}},__esModule:{value:!0}})},{}],47:[function(e,t,n){"use strict";function o(e){for(var t=void 0!==arguments[1]?arguments[1]:0,n=-1,o=null;null!=e;){if(n===t){o=e;break}e.host&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE?e=e.host:(n++,e=e.parentNode)}return o}function r(e,t,n){for(;null!=e&&e!==n;){if(e.nodeType===Node.ELEMENT_NODE&&(t.indexOf(e.nodeName)>-1||t.indexOf(e)>-1))return e;e=e.host&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE?e.host:e.parentNode}return null}function i(e,t,n){for(var o=[];e&&(e=r(e,t,n),e&&(!n||n.contains(e)));)o.push(e),e=e.host&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE?e.host:e.parentNode;var i=o.length;return i?o[i-1]:null}function s(e,t){var n=e.parentNode,o=[];for("string"==typeof t?o=Array.prototype.slice.call(document.querySelectorAll(t),0):o.push(t);null!=n;){if(o.indexOf(n)>-1)return!0;n=n.parentNode}return!1}function a(e){function t(e){return e.nodeType===Node.ELEMENT_NODE&&e.nodeName===o.toUpperCase()}var n,o="hot-table",r=!1;for(n=l(e);null!=n;){if(t(n)){r=!0;break}if(n.host&&n.nodeType===Node.DOCUMENT_FRAGMENT_NODE){if(r=t(n.host))break;n=n.host}n=n.parentNode}return r}function l(e){return"undefined"!=typeof Polymer&&"function"==typeof wrap?wrap(e):e}function u(e){return"undefined"!=typeof Polymer&&"function"==typeof unwrap?unwrap(e):e}function c(e){var t=0;if(e.previousSibling)for(;e=e.previousSibling;)++t;return t}function d(e,t){var n=document.querySelector(".ht_clone_"+e);return n?n.contains(t):null}function h(e){var t=0,n=[];if(!e||!e.length)return n;for(;e[t];)n.push(e[t]),t++;return n}function f(e,t){return Z(e,t)}function p(e,t){return J(e,t)}function m(e,t){return Q(e,t)}function g(e,t){if(3===e.nodeType)t.removeChild(e);else if(["TABLE","THEAD","TBODY","TFOOT","TR"].indexOf(e.nodeName)>-1)for(var n=e.childNodes,o=n.length-1;o>=0;o--)g(n[o],e)}function w(e){for(var t;t=e.lastChild;)e.removeChild(t)}function v(e,t){ue.test(t)?e.innerHTML=t:y(e,t)}function y(e,t){var n=e.firstChild;n&&3===n.nodeType&&null===n.nextSibling?ce?n.textContent=t:n.data=t:(w(e),e.appendChild(document.createTextNode(t)))}function b(e){for(var t=e;u(t)!==document.documentElement;){if(null===t)return!1;if(t.nodeType===Node.DOCUMENT_FRAGMENT_NODE){if(t.host){if(t.host.impl)return b(t.host.impl);if(t.host)return b(t.host);throw new Error("Lost in Web Components world")}return!1}if("none"===t.style.display)return!1;t=t.parentNode}return!0}function C(e){var t,n,o,r,i;if(r=document.documentElement,re()&&e.firstChild&&"CAPTION"===e.firstChild.nodeName)return i=e.getBoundingClientRect(),{top:i.top+(window.pageYOffset||r.scrollTop)-(r.clientTop||0),left:i.left+(window.pageXOffset||r.scrollLeft)-(r.clientLeft||0)};for(t=e.offsetLeft,n=e.offsetTop,o=e;(e=e.offsetParent)&&e!==document.body;)t+=e.offsetLeft,n+=e.offsetTop,o=e;return o&&"fixed"===o.style.position&&(t+=window.pageXOffset||r.scrollLeft,n+=window.pageYOffset||r.scrollTop),{left:t,top:n}}function _(){var e=window.scrollY;return void 0===e&&(e=document.documentElement.scrollTop),e}function R(){var e=window.scrollX;return void 0===e&&(e=document.documentElement.scrollLeft),e}function M(e){return e===window?_():e.scrollTop}function S(e){return e===window?R():e.scrollLeft}function E(e){for(var t,n,o,r=e.parentNode,i=["auto","scroll"],s="",a="",l="",u="";r&&r.style&&document.body!==r;){if(t=r.style.overflow,n=r.style.overflowX,o=r.style.overflowY,"scroll"==t||"scroll"==n||"scroll"==o)return r;if(window.getComputedStyle&&(s=window.getComputedStyle(r),a=s.getPropertyValue("overflow"),l=s.getPropertyValue("overflow-y"),u=s.getPropertyValue("overflow-x"),"scroll"===a||"scroll"===u||"scroll"===l))return r;if(r.clientHeight<=r.scrollHeight&&(i.indexOf(o)!==-1||i.indexOf(t)!==-1||i.indexOf(a)!==-1||i.indexOf(l)!==-1))return r;if(r.clientWidth<=r.scrollWidth&&(i.indexOf(n)!==-1||i.indexOf(t)!==-1||i.indexOf(a)!==-1||i.indexOf(u)!==-1))return r;r=r.parentNode}return window}function O(e){for(var t=e.parentNode;t&&t.style&&document.body!==t;){if("visible"!==t.style.overflow&&""!==t.style.overflow)return t;if(window.getComputedStyle){var n=window.getComputedStyle(t);if("visible"!==n.getPropertyValue("overflow")&&""!==n.getPropertyValue("overflow"))return t}t=t.parentNode}return window}function T(e,t){if(e){if(e!==window){var n,o=e.style[t];return""!==o&&void 0!==o?o:(n=k(e),""!==n[t]&&void 0!==n[t]?n[t]:void 0)}if("width"===t)return window.innerWidth+"px";if("height"===t)return window.innerHeight+"px"}}function k(e){return e.currentStyle||document.defaultView.getComputedStyle(e)}function x(e){return e.offsetWidth}function D(e){return re()&&e.firstChild&&"CAPTION"===e.firstChild.nodeName?e.offsetHeight+e.firstChild.offsetHeight:e.offsetHeight}function H(e){return e.clientHeight||e.innerHeight}function A(e){return e.clientWidth||e.innerWidth}function P(e,t,n){window.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on"+t,n)}function N(e,t,n){window.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent("on"+t,n)}function L(e){if(e.selectionStart)return e.selectionStart;if(document.selection){e.focus();var t=document.selection.createRange();if(null==t)return 0;var n=e.createTextRange(),o=n.duplicate();return n.moveToBookmark(t.getBookmark()),o.setEndPoint("EndToStart",n),o.text.length}return 0}function I(e){if(e.selectionEnd)return e.selectionEnd;if(document.selection){var t=document.selection.createRange();if(null==t)return 0;var n=e.createTextRange();return n.text.indexOf(t.text)+t.text.length}}function W(){var e="";return window.getSelection?e=window.getSelection().toString():document.selection&&"Control"!==document.selection.type&&(e=document.selection.createRange().text),e}function j(e,t,n){if(void 0===n&&(n=t),e.setSelectionRange){e.focus();try{e.setSelectionRange(t,n)}catch(i){var o=e.parentNode,r=o.style.display;o.style.display="block",e.setSelectionRange(t,n),o.style.display=r}}else if(e.createTextRange){var i=e.createTextRange();i.collapse(!0),i.moveEnd("character",n),i.moveStart("character",t),i.select()}}function V(){var e=document.createElement("div");e.style.height="200px",e.style.width="100%";var t=document.createElement("div");t.style.boxSizing="content-box",t.style.height="150px",t.style.left="0px",t.style.overflow="hidden",t.style.position="absolute",t.style.top="0px",t.style.width="200px",t.style.visibility="hidden",t.appendChild(e),(document.body||document.documentElement).appendChild(t);var n=e.offsetWidth;t.style.overflow="scroll";var o=e.offsetWidth;return n==o&&(o=t.clientWidth),(document.body||document.documentElement).removeChild(t),n-o}function B(){return void 0===le&&(le=V()),le}function F(e){return e.offsetWidth!==e.clientWidth}function z(e){return e.offsetHeight!==e.clientHeight}function Y(e,t,n){te()||ne()?(e.style.top=n,e.style.left=t):oe()?e.style["-webkit-transform"]="translate3d("+t+","+n+",0)":e.style.transform="translate3d("+t+","+n+",0)"}function U(e){var t;return e.style.transform&&""!==(t=e.style.transform)?["transform",t]:e.style["-webkit-transform"]&&""!==(t=e.style["-webkit-transform"])?["-webkit-transform",t]:-1}function G(e){e.style.transform&&""!==e.style.transform?e.style.transform="":e.style["-webkit-transform"]&&""!==e.style["-webkit-transform"]&&(e.style["-webkit-transform"]="")}function $(e){var t=["INPUT","SELECT","TEXTAREA"];return e&&(t.indexOf(e.nodeName)>-1||"true"===e.contentEditable)}function K(e){return $(e)&&e.className.indexOf("handsontableInput")==-1&&e.className.indexOf("copyPaste")==-1}Object.defineProperties(n,{getParent:{get:function(){return o}},closest:{get:function(){return r}},closestDown:{get:function(){return i}},isChildOf:{get:function(){return s}},isChildOfWebComponentTable:{get:function(){return a}},polymerWrap:{get:function(){return l}},polymerUnwrap:{get:function(){return u}},index:{get:function(){return c}},overlayContainsElement:{get:function(){return d}},hasClass:{get:function(){return f}},addClass:{get:function(){return p}},removeClass:{get:function(){return m}},removeTextNodes:{get:function(){return g}},empty:{get:function(){return w}},HTML_CHARACTERS:{get:function(){return ue}},fastInnerHTML:{get:function(){return v}},fastInnerText:{get:function(){return y}},isVisible:{get:function(){return b}},offset:{get:function(){return C}},getWindowScrollTop:{get:function(){return _}},getWindowScrollLeft:{get:function(){return R}},getScrollTop:{get:function(){return M}},getScrollLeft:{get:function(){return S}},getScrollableElement:{get:function(){return E}},getTrimmingContainer:{get:function(){return O}},getStyle:{get:function(){return T}},getComputedStyle:{get:function(){return k}},outerWidth:{get:function(){return x}},outerHeight:{get:function(){return D}},innerHeight:{get:function(){return H}},innerWidth:{get:function(){return A}},addEvent:{get:function(){return P}},removeEvent:{get:function(){return N}},getCaretPosition:{get:function(){return L}},getSelectionEndPosition:{get:function(){return I}},getSelectionText:{get:function(){return W}},setCaretPosition:{get:function(){return j}},getScrollbarWidth:{get:function(){return B}},hasVerticalScrollbar:{get:function(){return F}},hasHorizontalScrollbar:{get:function(){return z}},setOverlayPosition:{get:function(){return Y}},getCssTransform:{get:function(){return U}},resetCssTransform:{get:function(){return G}},isInput:{get:function(){return $}},isOutsideInput:{get:function(){return K}},__esModule:{value:!0}});var X,q,Z,J,Q,ee=(X=e("../browser"),X&&X.__esModule&&X||{default:X}),te=ee.isIE8,ne=ee.isIE9,oe=ee.isSafari,re=(q=e("../feature"),q&&q.__esModule&&q||{default:q}).hasCaptionProblem,ie=!!document.documentElement.classList;if(ie){var se=function(){var e=document.createElement("div");return e.classList.add("test","test2"),e.classList.contains("test2")}();Z=function(e,t){return""!==t&&e.classList.contains(t)},J=function(e,t){var n=0;if("string"==typeof t&&(t=t.split(" ")),t=h(t),se)e.classList.add.apply(e.classList,t);else for(;t&&t[n];)e.classList.add(t[n]),n++},Q=function(e,t){var n=0;if("string"==typeof t&&(t=t.split(" ")),t=h(t),se)e.classList.remove.apply(e.classList,t);else for(;t&&t[n];)e.classList.remove(t[n]),n++}}else{var ae=function(e){return new RegExp("(\\s|^)"+e+"(\\s|$)")};Z=function(e,t){return!!e.className.match(ae(t))},J=function(e,t){var n=0,o=e.className;if("string"==typeof t&&(t=t.split(" ")),""===o)o=t.join(" ");else for(;t&&t[n];)ae(t[n]).test(o)||(o+=" "+t[n]),n++;e.className=o},Q=function(e,t){var n=0,o=e.className;for("string"==typeof t&&(t=t.split(" "));t&&t[n];)o=o.replace(ae(t[n])," ").trim(),n++;e.className!==o&&(e.className=o)}}var le,ue=/(<(.*)>|&(.*);)/,ce=!!document.createTextNode("test").textContent},{"../browser":44,"../feature":49}],48:[function(e,t,n){"use strict";function o(e){e.isImmediatePropagationEnabled=!1,e.cancelBubble=!0}function r(e){return e.isImmediatePropagationEnabled===!1}function i(e){"function"==typeof e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function s(e){return e.pageX?e.pageX:e.clientX+f()}function a(e){return e.pageY?e.pageY:e.clientY+h()}function l(e){return 2===e.button}function u(e){return 0===e.button}Object.defineProperties(n,{stopImmediatePropagation:{get:function(){return o}},isImmediatePropagationStopped:{get:function(){return r}},stopPropagation:{get:function(){return i}},pageX:{get:function(){return s}},pageY:{get:function(){return a}},isRightClick:{get:function(){return l}},isLeftClick:{get:function(){return u}},__esModule:{value:!0}});var c,d=(c=e("element"),c&&c.__esModule&&c||{default:c}),h=d.getWindowScrollTop,f=d.getWindowScrollLeft},{element:47}],49:[function(e,t,n){"use strict";function o(e){return h.call(window,e)}function r(e){f.call(window,e)}function i(){return"ontouchstart"in window}function s(){var e=document.createElement("div");return!(!e.createShadowRoot||!e.createShadowRoot.toString().match(/\[native code\]/))}function a(){var e=document.createElement("TABLE");e.style.borderSpacing=0,e.style.borderWidth=0,e.style.padding=0;var t=document.createElement("TBODY");e.appendChild(t),t.appendChild(document.createElement("TR")),t.firstChild.appendChild(document.createElement("TD")),t.firstChild.firstChild.innerHTML="<tr><td>t<br>t</td></tr>";var n=document.createElement("CAPTION");n.innerHTML="c<br>c<br>c<br>c",n.style.padding=0,n.style.margin=0,e.insertBefore(n,t),document.body.appendChild(e),m=e.offsetHeight<2*e.lastChild.offsetHeight,document.body.removeChild(e)}function l(){return void 0===m&&a(),m}function u(e){var t=void 0!==arguments[1]?arguments[1]:{};return g?g:g="object"==typeof Intl?new Intl.Collator(e,t).compare:"function"==typeof String.prototype.localeCompare?function(e,t){return(e+"").localeCompare(t)}:function(e,t){return e===t?0:e>t?-1:1}}Object.defineProperties(n,{requestAnimationFrame:{get:function(){return o}},cancelAnimationFrame:{get:function(){return r}},isTouchSupported:{get:function(){return i}},isWebComponentSupportedNatively:{get:function(){return s}},hasCaptionProblem:{get:function(){return l}},getComparisonFunction:{get:function(){return u}},__esModule:{value:!0}});for(var c=0,d=["ms","moz","webkit","o"],h=window.requestAnimationFrame,f=window.cancelAnimationFrame,p=0;p<d.length&&!h;++p)h=window[d[p]+"RequestAnimationFrame"],f=window[d[p]+"CancelAnimationFrame"]||window[d[p]+"CancelRequestAnimationFrame"];h||(h=function(e){var t=(new Date).getTime(),n=Math.max(0,16-(t-c)),o=window.setTimeout(function(){e(t+n)},n);return c=t+n,o}),f||(f=function(e){clearTimeout(e)});var m,g},{}],50:[function(e,t,n){"use strict";function o(e){return"function"==typeof e}function r(e,t){return function(){return e.apply(t,arguments)}}function i(e){function t(){var t=this,s=arguments,a=Date.now(),l=!1;r.lastCallThrottled=!0,o||(o=a,l=!0);var u=n-(a-o);return l?(r.lastCallThrottled=!1,e.apply(this,s)):(i&&clearTimeout(i),i=setTimeout(function(){r.lastCallThrottled=!1,e.apply(t,s),o=0,i=void 0},u)),r}var n=void 0!==arguments[1]?arguments[1]:200,o=0,r={lastCallThrottled:!0},i=null;return t}function s(e){function t(){a=r}function n(){return a?(a--,e.apply(this,arguments)):s.apply(this,arguments)}var o=void 0!==arguments[1]?arguments[1]:200,r=void 0!==arguments[2]?arguments[2]:10,s=i(e,o),a=r;return n.clearHits=t,n}function a(e){function t(){var t=this,i=arguments;return r&&clearTimeout(r),r=setTimeout(function(){n=e.apply(t,i)},o),n}var n,o=void 0!==arguments[1]?arguments[1]:200,r=null;return t}function l(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=e,o=n[0],r=Array.prototype.slice.call(n,1);
return function(){return f(r,function(e,t){return t(e)},o.apply(this,arguments))}}function u(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(this,t.concat(n))}}function c(e){function t(o){return function(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];var s,a=o.concat(r);return s=a.length>=n?e.apply(this,a):t(a)}}var n=e.length;return t([])}function d(e){function t(o){return function(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];var s,a=o.concat(r.reverse());return s=a.length>=n?e.apply(this,a):t(a)}}var n=e.length;return t([])}Object.defineProperties(n,{isFunction:{get:function(){return o}},proxy:{get:function(){return r}},throttle:{get:function(){return i}},throttleAfterHits:{get:function(){return s}},debounce:{get:function(){return a}},pipe:{get:function(){return l}},partial:{get:function(){return u}},curry:{get:function(){return c}},curryRight:{get:function(){return d}},__esModule:{value:!0}});var h,f=(h=e("array"),h&&h.__esModule&&h||{default:h}).arrayReduce},{array:43}],51:[function(e,t,n){"use strict";function o(e){switch(typeof e){case"string":case"number":return e+"";case"object":return null===e?"":e.toString();case"undefined":return"";default:return e.toString()}}function r(e){return"undefined"!=typeof e}function i(e){return"undefined"==typeof e}function s(e){return null===e||""===e||i(e)}Object.defineProperties(n,{stringify:{get:function(){return o}},isDefined:{get:function(){return r}},isUndefined:{get:function(){return i}},isEmpty:{get:function(){return s}},__esModule:{value:!0}})},{}],52:[function(e,t,n){"use strict";function o(e){var t=typeof e;return"number"==t?!isNaN(e)&&isFinite(e):"string"==t?!!e.length&&(1==e.length?/\d/.test(e):/^\s*[+-]?\s*(?:(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?)|(?:0x[a-f\d]+))\s*$/i.test(e)):"object"==t&&!(!e||"number"!=typeof e.valueOf()||e instanceof Date)}function r(e,t,n){var o=-1;for("function"==typeof t?(n=t,t=e):o=e-1;++o<=t&&n(o)!==!1;);}function i(e,t,n){var o=e+1;for("function"==typeof t&&(n=t,t=0);--o>=t&&n(o)!==!1;);}function s(e,t){return t=parseInt(t.toString().replace("%",""),10),t=parseInt(e*t/100)}Object.defineProperties(n,{isNumeric:{get:function(){return o}},rangeEach:{get:function(){return r}},rangeEachReverse:{get:function(){return i}},valueAccordingPercent:{get:function(){return s}},__esModule:{value:!0}})},{}],53:[function(e,t,n){"use strict";function o(e){var t;return Array.isArray(e)?t=[]:(t={},p(e,function(e,n){"__children"!==n&&(e&&"object"==typeof e&&!Array.isArray(e)?t[n]=o(e):Array.isArray(e)?e.length&&"object"==typeof e[0]&&!Array.isArray(e[0])?t[n]=[o(e[0])]:t[n]=[]:t[n]=null)})),t}function r(e,t){return t.prototype.constructor=t,e.prototype=new t,e.prototype.constructor=e,e}function i(e,t){return p(t,function(t,n){e[n]=t}),e}function s(e,t){p(t,function(n,o){t[o]&&"object"==typeof t[o]?(e[o]||(Array.isArray(t[o])?e[o]=[]:"[object Date]"===Object.prototype.toString.call(t[o])?e[o]=t[o]:e[o]={}),s(e[o],t[o])):e[o]=t[o]})}function a(e){return"object"==typeof e?JSON.parse(JSON.stringify(e)):e}function l(e){var t={};return p(e,function(e,n){t[n]=e}),t}function u(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return e.MIXINS||(e.MIXINS=[]),y(t,function(t){e.MIXINS.push(t.MIXIN_NAME),p(t,function(t,n){if(void 0!==e.prototype[n])throw new Error("Mixin conflict. Property '"+n+"' already exist and cannot be overwritten.");if("function"==typeof t)e.prototype[n]=t;else{var o=function(e,t){e="_"+e;var n=function(e){return(Array.isArray(e)||d(e))&&(e=a(e)),e};return function(){return void 0===this[e]&&(this[e]=n(t)),this[e]}},r=function(e){return e="_"+e,function(t){this[e]=t}};Object.defineProperty(e.prototype,n,{get:o(n,t),set:r(n),configurable:!0})}})}),e}function c(e,t){return JSON.stringify(e)===JSON.stringify(t)}function d(e){return"[object Object]"==Object.prototype.toString.call(e)}function h(e){var t;if("object"==typeof e.__proto__)t=e.__proto__;else{var n,o=e.constructor;"function"==typeof e.constructor&&(n=o,delete e.constructor&&(o=e.constructor,e.constructor=n)),t=o?o.prototype:null}return t}function f(e,t,n,o){o.value=n,o.writable=o.writable!==!1,o.enumerable=o.enumerable!==!1,o.configurable=o.configurable!==!1,Object.defineProperty(e,t,o)}function p(e,t){for(var n in e)if((!e.hasOwnProperty||e.hasOwnProperty&&e.hasOwnProperty(n))&&t(e[n],n,e)===!1)break;return e}function m(e,t){var n=t.split("."),o=e;return p(n,function(e){if(o=o[e],void 0===o)return o=void 0,!1}),o}function g(e){if(!d(e))return 0;var t=function(e){var n=0;return d(e)?p(e,function(e){n+=t(e)}):n++,n};return t(e)}function w(e){var t,n=void 0!==arguments[1]?arguments[1]:"value",o="_"+n,r=(t={},Object.defineProperty(t,"_touched",{value:!1,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(t,o,{value:e,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(t,"isTouched",{value:function(){return this._touched},configurable:!0,enumerable:!0,writable:!0}),t);return Object.defineProperty(r,n,{get:function(){return this[o]},set:function(e){this._touched=!0,this[o]=e},enumerable:!0,configurable:!0}),r}Object.defineProperties(n,{duckSchema:{get:function(){return o}},inherit:{get:function(){return r}},extend:{get:function(){return i}},deepExtend:{get:function(){return s}},deepClone:{get:function(){return a}},clone:{get:function(){return l}},mixin:{get:function(){return u}},isObjectEquals:{get:function(){return c}},isObject:{get:function(){return d}},getPrototypeOf:{get:function(){return h}},defineGetter:{get:function(){return f}},objectEach:{get:function(){return p}},getProperty:{get:function(){return m}},deepObjectSize:{get:function(){return g}},createObjectPropListener:{get:function(){return w}},__esModule:{value:!0}});var v,y=(v=e("array"),v&&v.__esModule&&v||{default:v}).arrayEach},{array:43}],54:[function(e,t,n){"use strict";function o(e,t){function n(){}i(n,e);for(var o=0,r=t.length;o<r;o++)n.prototype[t[o]]=void 0;return n}Object.defineProperties(n,{columnFactory:{get:function(){return o}},__esModule:{value:!0}});var r,i=(r=e("object"),r&&r.__esModule&&r||{default:r}).inherit},{object:53}],55:[function(e,t,n){"use strict";function o(e){return e[0].toUpperCase()+e.substr(1)}function r(e,t){var n=!0;return m(t.length-1,function(o){if(e.charAt(o)!==t.charAt(o))return n=!1,!1}),n}function i(e,t){var n=!0,o=t.length-1,r=e.length-1;return m(o,function(i){var s=r-i,a=o-i;if(e.charAt(s)!==t.charAt(a))return n=!1,!1}),n}function s(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=[],o=e.length;o--;){var r=p(e[o]).toLowerCase();n.indexOf(r)===-1&&n.push(r)}return 1===n.length}function a(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+e()+e()}function l(e){return/^([0-9][0-9]?\%$)|(^100\%$)/.test(e)}function u(e){var t=void 0!==arguments[1]?arguments[1]:{};return(e+"").replace(/(?:\\)?\[([^\[\]]+)]/g,function(e,n){return"\\"===e.charAt(0)?e.substr(1,e.length-1):void 0===t[n]?"":t[n]})}function c(e,t){var n=void 0!==arguments[2]?arguments[2]:" ";if(e+="",e.length>=t)return e;n=String(n);var o=n.length;o||(n=" ");var r=t-e.length,i=Math.ceil(r/n.length),s="";return m(i,function(e){s+=n}),s=s.slice(0,r),s+e}function d(e){return e+="",e.replace(g,"")}Object.defineProperties(n,{toUpperCaseFirst:{get:function(){return o}},startsWith:{get:function(){return r}},endsWith:{get:function(){return i}},equalsIgnoreCase:{get:function(){return s}},randomString:{get:function(){return a}},isPercentValue:{get:function(){return l}},substitute:{get:function(){return u}},padStart:{get:function(){return c}},stripTags:{get:function(){return d}},__esModule:{value:!0}});var h,f,p=(h=e("mixed"),h&&h.__esModule&&h||{default:h}).stringify,m=(f=e("number"),f&&f.__esModule&&f||{default:f}).rangeEach,g=/<\/?\w+\/?>|<\w+[\s|\/][^>]*>/gi},{mixed:51,number:52}],56:[function(e,t,n){"use strict";function o(e){return 32==e||e>=48&&e<=57||e>=96&&e<=111||e>=186&&e<=192||e>=219&&e<=222||e>=226||e>=65&&e<=90}function r(e){var t=[u.ARROW_DOWN,u.ARROW_UP,u.ARROW_LEFT,u.ARROW_RIGHT,u.HOME,u.END,u.DELETE,u.BACKSPACE,u.F1,u.F2,u.F3,u.F4,u.F5,u.F6,u.F7,u.F8,u.F9,u.F10,u.F11,u.F12,u.TAB,u.PAGE_DOWN,u.PAGE_UP,u.ENTER,u.ESCAPE,u.SHIFT,u.CAPS_LOCK,u.ALT];return t.indexOf(e)!==-1}function i(e){return[u.CONTROL_LEFT,224,u.COMMAND_LEFT,u.COMMAND_RIGHT].indexOf(e)!==-1}function s(e,t){var n=t.split("|"),o=!1;return l(n,function(t){if(e===u[t])return o=!0,!1}),o}Object.defineProperties(n,{KEY_CODES:{get:function(){return u}},isPrintableChar:{get:function(){return o}},isMetaKey:{get:function(){return r}},isCtrlKey:{get:function(){return i}},isKey:{get:function(){return s}},__esModule:{value:!0}});var a,l=(a=e("array"),a&&a.__esModule&&a||{default:a}).arrayEach,u={MOUSE_LEFT:1,MOUSE_RIGHT:3,MOUSE_MIDDLE:2,BACKSPACE:8,COMMA:188,INSERT:45,DELETE:46,END:35,ENTER:13,ESCAPE:27,CONTROL_LEFT:91,COMMAND_LEFT:17,COMMAND_RIGHT:93,ALT:18,HOME:36,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,SPACE:32,SHIFT:16,CAPS_LOCK:20,TAB:9,ARROW_RIGHT:39,ARROW_LEFT:37,ARROW_UP:38,ARROW_DOWN:40,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,A:65,X:88,C:67,V:86}},{array:43}],57:[function(e,t,n){"use strict";Object.defineProperties(n,{arrayMapper:{get:function(){return m}},__esModule:{value:!0}});var o,r,i,s,a=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,l=(r=e("helpers/array"),r&&r.__esModule&&r||{default:r}),u=(l.arrayEach,l.arrayReduce),c=l.arrayMap,d=l.arrayMax,h=(i=e("helpers/object"),i&&i.__esModule&&i||{default:i}).defineGetter,f=(s=e("helpers/number"),s&&s.__esModule&&s||{default:s}).rangeEach,p="arrayMapper",m={_arrayMap:[],getValueByIndex:function(e){var t;return void 0===(t=this._arrayMap[e])?null:t},getIndexByValue:function(e){var t;return(t=this._arrayMap.indexOf(e))===-1?null:t},insertItems:function(e){var t=void 0!==arguments[1]?arguments[1]:1,n=this,o=d(this._arrayMap)+1,r=[];return f(t-1,function(t){r.push(n._arrayMap.splice(e+t,0,o+t))}),r},removeItems:function(e){var t=void 0!==arguments[1]?arguments[1]:1,n=this,o=[];if(Array.isArray(e)){var r=[].concat(this._arrayMap);e.sort(function(e,t){return t-e}),o=u(e,function(e,t){return n._arrayMap.splice(t,1),e.concat(r.slice(t,t+1))},[])}else o=this._arrayMap.splice(e,t);return o},unshiftItems:function(e){function t(e){return u(o,function(t,n){return e>n&&t++,t},0)}var n=void 0!==arguments[1]?arguments[1]:1,o=this.removeItems(e,n);this._arrayMap=c(this._arrayMap,function(e,n){var o=t(e);return o&&(e-=o),e})},shiftItems:function(e){var t=void 0!==arguments[1]?arguments[1]:1,n=this;this._arrayMap=c(this._arrayMap,function(n){return n>=e&&(n+=t),n}),f(t-1,function(t){n._arrayMap.splice(e+t,0,e+t)})},clearMap:function(){this._arrayMap.length=0}};h(m,"MIXIN_NAME",p,{writable:!1,enumerable:!1}),a.utils.arrayMapper=m},{browser:24,"helpers/array":43,"helpers/number":52,"helpers/object":53}],58:[function(e,t,n){"use strict";Object.defineProperties(n,{localHooks:{get:function(){return c}},__esModule:{value:!0}});var o,r,i,s=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,a=(r=e("helpers/array"),r&&r.__esModule&&r||{default:r}).arrayEach,l=(i=e("helpers/object"),i&&i.__esModule&&i||{default:i}).defineGetter,u="localHooks",c={_localHooks:Object.create(null),addLocalHook:function(e,t){this._localHooks[e]||(this._localHooks[e]=[]),this._localHooks[e].push(t)},runLocalHooks:function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var o=this;this._localHooks[e]&&a(this._localHooks[e],function(e){return e.apply(o,t)})},clearLocalHooks:function(){this._localHooks={}}};l(c,"MIXIN_NAME",u,{writable:!1,enumerable:!1}),s.utils.localHooks=c},{browser:24,"helpers/array":43,"helpers/object":53}],59:[function(e,t,n){"use strict";function o(){function e(e){return null!==e&&!n(e)&&("string"==typeof e||"number"==typeof e)}function t(e){return null!==e&&("object"==typeof e||"function"==typeof e)}function n(e){return e!==e}var o={arrayMap:[],weakMap:new WeakMap};return{get:function(n){return e(n)?o.arrayMap[n]:t(n)?o.weakMap.get(n):void 0},set:function(n,r){if(e(n))o.arrayMap[n]=r;else{if(!t(n))throw new Error("Invalid key type");o.weakMap.set(n,r)}},delete:function(n){e(n)?delete o.arrayMap[n]:t(n)&&o.weakMap.delete(n)}}}Object.defineProperties(n,{MultiMap:{get:function(){return o}},__esModule:{value:!0}}),window.MultiMap=o},{}],60:[function(e,t,n){"use strict";Object.defineProperties(n,{Hooks:{get:function(){return l}},__esModule:{value:!0}});var o,r,i=["afterCellMetaReset","afterChange","afterChangesObserved","afterContextMenuDefaultOptions","beforeContextMenuSetItems","afterDropdownMenuDefaultOptions","beforeDropdownMenuSetItems","afterContextMenuHide","afterContextMenuShow","afterCopyLimit","beforeCreateCol","afterCreateCol","beforeCreateRow","afterCreateRow","afterDeselect","afterDestroy","afterDocumentKeyDown","afterGetCellMeta","afterGetColHeader","afterGetRowHeader","afterInit","afterLoadData","afterMomentumScroll","afterOnCellCornerMouseDown","afterOnCellCornerDblClick","afterOnCellMouseDown","afterOnCellMouseOver","afterRemoveCol","afterRemoveRow","afterRender","beforeRenderer","afterRenderer","afterScrollHorizontally","afterScrollVertically","afterSelection","afterSelectionByProp","afterSelectionEnd","afterSelectionEndByProp","afterSetCellMeta","afterSetDataAtCell","afterSetDataAtRowProp","afterUpdateSettings","afterValidate","beforeAutofill","beforeCellAlignment","beforeChange","beforeChangeRender","beforeDrawBorders","beforeGetCellMeta","beforeInit","beforeInitWalkontable","beforeKeyDown","beforeOnCellMouseDown","beforeOnCellMouseOver","beforeRemoveCol","beforeRemoveRow","beforeRender","beforeSetRangeStart","beforeSetRangeEnd","beforeTouchScroll","beforeValidate","beforeValueRender","construct","init","modifyCol","unmodifyCol","unmodifyRow","modifyColHeader","modifyColWidth","modifyRow","modifyRowHeader","modifyRowHeight","modifyData","modifyRowData","persistentStateLoad","persistentStateReset","persistentStateSave","beforeColumnSort","afterColumnSort","modifyAutofillRange","modifyCopyableRange","beforeColumnMove","afterColumnMove","beforeRowMove","afterRowMove","beforeColumnResize","afterColumnResize","beforeRowResize","afterRowResize","afterGetColumnHeaderRenderers","afterGetRowHeaderRenderers","beforeStretchingColumnWidth","beforeFilter","afterFilter","modifyColumnHeaderHeight","beforeUndo","afterUndo","beforeRedo","afterRedo","modifyRowHeaderWidth","beforeAutofillInsidePopulate","modifyTransformStart","modifyTransformEnd","afterModifyTransformStart","afterModifyTransformEnd","beforeValueRender","afterViewportRowCalculatorOverride","afterViewportColumnCalculatorOverride","afterPluginsInitialized","manualRowHeights","skipLengthCache","afterTrimRow","afterUntrimRow","afterDropdownMenuShow","afterDropdownMenuHide","hiddenRow","hiddenColumn","beforeAddChild","afterAddChild","beforeDetachChild","afterDetachChild","afterBeginEditing"],s=(o=e("helpers/array"),o&&o.__esModule&&o||{default:o}).arrayEach,a=(r=e("helpers/object"),r&&r.__esModule&&r||{default:r}).objectEach,l=function(){this.globalBucket=this.createEmptyBucket()};$traceurRuntime.createClass(l,{createEmptyBucket:function(){var e=Object.create(null);return s(i,function(t){return e[t]=[]}),e},getBucket:function(){var e=void 0!==arguments[0]?arguments[0]:null;return e?(e.pluginHookBucket||(e.pluginHookBucket=this.createEmptyBucket()),e.pluginHookBucket):this.globalBucket},add:function(e,t){var n=void 0!==arguments[2]?arguments[2]:null,o=this;if(Array.isArray(t))s(t,function(t){return o.add(e,t,n)});else{var r=this.getBucket(n);"undefined"==typeof r[e]&&(this.register(e),r[e]=[]),t.skip=!1,r[e].indexOf(t)===-1&&r[e].push(t)}return this},once:function(e,t){var n=void 0!==arguments[2]?arguments[2]:null,o=this;Array.isArray(t)?s(t,function(t){return o.once(e,t,n)}):(t.runOnce=!0,this.add(e,t,n))},remove:function(e,t){var n=void 0!==arguments[2]?arguments[2]:null,o=this.getBucket(n);return"undefined"!=typeof o[e]&&o[e].indexOf(t)>=0&&(t.skip=!0,!0)},has:function(e){var t=void 0!==arguments[1]?arguments[1]:null,n=this.getBucket(t);return!(void 0===n[e]||!n[e].length)},run:function(e,t,n,o,r,i,s,a){var l=this.globalBucket[t],u=-1,c=l?l.length:0;if(c)for(;++u<c;)if(l[u]&&!l[u].skip){var d=l[u].call(e,n,o,r,i,s,a);void 0!==d&&(n=d),l[u]&&l[u].runOnce&&this.remove(t,l[u])}var h=this.getBucket(e)[t],f=-1,p=h?h.length:0;if(p)for(;++f<p;)if(h[f]&&!h[f].skip){var m=h[f].call(e,n,o,r,i,s,a);void 0!==m&&(n=m),h[f]&&h[f].runOnce&&this.remove(t,h[f],e)}return n},destroy:function(){var e=void 0!==arguments[0]?arguments[0]:null;a(this.getBucket(e),function(e,t,n){return n[t].length=0})},register:function(e){this.isRegistered(e)||i.push(e)},deregister:function(e){this.isRegistered(e)&&i.splice(i.indexOf(e),1)},isRegistered:function(e){return i.indexOf(e)>=0},getRegistered:function(){return i}},{})},{"helpers/array":43,"helpers/object":53}],61:[function(e,t,n){"use strict";function o(e,t){e=h(e),c.plugins[e]=t,c.hooks.add("construct",function(){var n;f.has(this)||f.set(this,{}),n=f.get(this),n[e]||(n[e]=new t(this))}),c.hooks.add("afterDestroy",function(){if(f.has(this)){var e=f.get(this);d(e,function(e){return e.destroy()}),f.delete(this)}})}function r(e,t){if("string"!=typeof t)throw Error('Only strings can be passed as "plugin" parameter');var n=h(t);if(f.has(e)&&f.get(e)[n])return f.get(e)[n]}function i(e){return f.has(e)?Object.keys(f.get(e)):[]}function s(e,t){var n=null;return f.has(e)&&d(f.get(e),function(e,o){e===t&&(n=o)}),n}Object.defineProperties(n,{registerPlugin:{get:function(){return o}},getPlugin:{get:function(){return r}},getRegistredPluginNames:{get:function(){return i}},getPluginName:{get:function(){return s}},__esModule:{value:!0}});var a,l,u,c=(a=e("browser"),a&&a.__esModule&&a||{default:a}).default,d=(l=e("helpers/object"),l&&l.__esModule&&l||{default:l}).objectEach,h=(u=e("helpers/string"),u&&u.__esModule&&u||{default:u}).toUpperCaseFirst,f=new WeakMap},{browser:24,"helpers/object":53,"helpers/string":55}],62:[function(e,t,n){"use strict";Object.defineProperties(n,{default:{get:function(){return C}},__esModule:{value:!0}});var o,r,i,s,a,l=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,u=(r=e("helpers/object"),r&&r.__esModule&&r||{default:r}),c=u.defineGetter,d=u.objectEach,h=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}).arrayEach,f=(s=e("utils/recordTranslator"),s&&s.__esModule&&s||{default:s}),p=(f.registerIdentity,f.getTranslator),m=(a=e("plugins"),a&&a.__esModule&&a||{default:a}),g=m.getRegistredPluginNames,w=m.getPluginName,v=new WeakMap,y=null,b=function(e){var t=this;c(this,"hot",e,{writable:!1}),c(this,"t",p(e),{writable:!1}),v.set(this,{hooks:{}}),y=null,this.pluginName=null,this.pluginsInitializedCallbacks=[],this.isPluginsReady=!1,this.enabled=!1,this.initialized=!1,this.hot.addHook("afterPluginsInitialized",function(){return t.onAfterPluginsInitialized()}),this.hot.addHook("afterUpdateSettings",function(){return t.onUpdateSettings()}),this.hot.addHook("beforeInit",function(){return t.init()})};$traceurRuntime.createClass(b,{init:function(){this.pluginName=w(this.hot,this),this.isEnabled&&this.isEnabled()&&this.enablePlugin(),y||(y=g(this.hot)),y.indexOf(this.pluginName)>=0&&y.splice(y.indexOf(this.pluginName),1),y.length||this.hot.runHooks("afterPluginsInitialized"),this.initialized=!0},enablePlugin:function(){this.enabled=!0},disablePlugin:function(){this.eventManager&&this.eventManager.clear(),this.clearHooks(),this.enabled=!1},addHook:function(e,t){var n=v.get(this).hooks[e]=v.get(this).hooks[e]||[];this.hot.addHook(e,t),n.push(t),v.get(this).hooks[e]=n},removeHooks:function(e){var t=this;h(v.get(this).hooks[e]||[],function(n){t.hot.removeHook(e,n)})},clearHooks:function(){var e=this,t=v.get(this).hooks;d(t,function(t,n){return e.removeHooks(n)}),t.length=0},callOnPluginsReady:function(e){this.isPluginsReady?e():this.pluginsInitializedCallbacks.push(e)},onAfterPluginsInitialized:function(){h(this.pluginsInitializedCallbacks,function(e){return e()}),this.pluginsInitializedCallbacks.length=0,this.isPluginsReady=!0},onUpdateSettings:function(){this.isEnabled&&(this.enabled&&!this.isEnabled()&&this.disablePlugin(),!this.enabled&&this.isEnabled()&&this.enablePlugin(),this.enabled&&this.isEnabled()&&this.updatePlugin())},updatePlugin:function(){},destroy:function(){var e=this;this.eventManager&&this.eventManager.destroy(),this.clearHooks(),d(this,function(t,n){"hot"!==n&&"t"!==n&&(e[n]=null)}),delete this.t,delete this.hot}},{});var C=b;l.plugins.BasePlugin=b},{browser:24,"helpers/array":43,"helpers/object":53,plugins:61,"utils/recordTranslator":130}],63:[function(e,t,n){"use strict";Object.defineProperties(n,{AutoColumnSize:{get:function(){return N}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d,h,f,p=(o=e("_base"),o&&o.__esModule&&o||{default:o}).default,m=(r=e("helpers/array"),r&&r.__esModule&&r||{default:r}),g=m.arrayEach,w=m.arrayFilter,v=m.arrayReduce,y=m.arrayMap,b=(i=e("helpers/feature"),i&&i.__esModule&&i||{default:i}),C=b.cancelAnimationFrame,_=b.requestAnimationFrame,R=(s=e("helpers/dom/element"),s&&s.__esModule&&s||{default:s}).isVisible,M=(a=e("utils/ghostTable"),a&&a.__esModule&&a||{default:a}).GhostTable,S=(l=e("helpers/object"),l&&l.__esModule&&l||{default:l}),E=S.isObject,O=(S.objectEach,u=e("helpers/number"),u&&u.__esModule&&u||{default:u}),T=O.valueAccordingPercent,k=O.rangeEach,x=(c=e("plugins"),c&&c.__esModule&&c||{default:c}).registerPlugin,D=(d=e("utils/samplesGenerator"),d&&d.__esModule&&d||{default:d}).SamplesGenerator,H=(h=e("helpers/string"),h&&h.__esModule&&h||{default:h}).isPercentValue,A=(f=e("3rdparty/walkontable/src/calculator/viewportColumns"),f&&f.__esModule&&f||{default:f}).WalkontableViewportColumnsCalculator,P=new WeakMap,N=function(e){var t=this;$traceurRuntime.superConstructor(L).call(this,e),P.set(this,{cachedColumnHeaders:[]}),this.widths=[],this.ghostTable=new M(this.hot),this.samplesGenerator=new D(function(e,n){return t.hot.getDataAtCell(e,n)}),this.firstCalculation=!0,this.inProgress=!1,this.addHook("beforeColumnResize",function(e,n,o){return t.onBeforeColumnResize(e,n,o)})},L=N;$traceurRuntime.createClass(N,{isEnabled:function(){return this.hot.getSettings().autoColumnSize!==!1&&!this.hot.getSettings().colWidths},enablePlugin:function(){var e=this;if(!this.enabled){var t=this.hot.getSettings().autoColumnSize;t&&null!=t.useHeaders&&this.ghostTable.setSetting("useHeaders",t.useHeaders),this.addHook("afterLoadData",function(){return e.onAfterLoadData()}),this.addHook("beforeChange",function(t){return e.onBeforeChange(t)}),this.addHook("beforeRender",function(t){return e.onBeforeRender(t)}),this.addHook("modifyColWidth",function(t,n){return e.getColumnWidth(n,t)}),this.addHook("afterInit",function(){return e.onAfterInit()}),$traceurRuntime.superGet(this,L.prototype,"enablePlugin").call(this)}},updatePlugin:function(){var e=this.findColumnsWhereHeaderWasChanged();e.length&&this.clearCache(e),$traceurRuntime.superGet(this,L.prototype,"updatePlugin").call(this)},disablePlugin:function(){$traceurRuntime.superGet(this,L.prototype,"disablePlugin").call(this)},calculateColumnsWidth:function(){var e=void 0!==arguments[0]?arguments[0]:{from:0,to:this.hot.countCols()-1},t=void 0!==arguments[1]?arguments[1]:{from:0,to:this.hot.countRows()-1},n=void 0!==arguments[2]&&arguments[2],o=this;"number"==typeof e&&(e={from:e,to:e}),"number"==typeof t&&(t={from:t,to:t}),k(e.from,e.to,function(e){if(n||void 0===o.widths[e]&&!o.hot._getColWidthFromSettings(e)){var r=o.samplesGenerator.generateColumnSamples(e,t);r.forEach(function(e,t){return o.ghostTable.addColumn(t,e)})}}),this.ghostTable.columns.length&&(this.ghostTable.getWidths(function(e,t){return o.widths[e]=t}),this.ghostTable.clean())},calculateAllColumnsWidth:function(){var e=void 0!==arguments[0]?arguments[0]:{from:0,to:this.hot.countRows()-1},t=this,n=0,o=this.hot.countCols()-1,r=null;this.inProgress=!0;var i=function(){return t.hot?(t.calculateColumnsWidth({from:n,to:Math.min(n+L.CALCULATION_STEP,o)},e),n=n+L.CALCULATION_STEP+1,void(n<o?r=_(i):(C(r),t.inProgress=!1,t.hot.view.wt.wtOverlays.adjustElementsSize(!0),t.hot.view.wt.wtOverlays.leftOverlay.needFullRender&&t.hot.view.wt.wtOverlays.leftOverlay.clone.draw()))):(C(r),void(t.inProgress=!1))};this.firstCalculation&&this.getSyncCalculationLimit()&&(this.calculateColumnsWidth({from:0,to:this.getSyncCalculationLimit()},e),this.firstCalculation=!1,n=this.getSyncCalculationLimit()+1),n<o?i():this.inProgress=!1},setSamplingOptions:function(){var e=this.hot.getSettings().autoColumnSize,t=e&&e.hasOwnProperty("samplingRatio")?this.hot.getSettings().autoColumnSize.samplingRatio:void 0,n=e&&e.hasOwnProperty("allowSampleDuplicates")?this.hot.getSettings().autoColumnSize.allowSampleDuplicates:void 0;t&&!isNaN(t)&&this.samplesGenerator.setSampleCount(parseInt(t,10)),n&&this.samplesGenerator.setAllowDuplicates(n)},recalculateAllColumnsWidth:function(){this.hot.view&&R(this.hot.view.wt.wtTable.TABLE)&&(this.clearCache(),this.calculateAllColumnsWidth())},getSyncCalculationLimit:function(){var e=L.SYNC_CALCULATION_LIMIT,t=this.hot.countCols()-1;return E(this.hot.getSettings().autoColumnSize)&&(e=this.hot.getSettings().autoColumnSize.syncLimit,H(e)?e=T(t,e):e>>=0),Math.min(e,t)},getColumnWidth:function(e){var t=arguments[1],n=void 0===arguments[2]||arguments[2],o=t;return void 0===o&&(o=this.widths[e],n&&"number"==typeof o&&(o=Math.max(o,A.DEFAULT_WIDTH))),o},getFirstVisibleColumn:function(){var e=this.hot.view.wt;return e.wtViewport.columnsVisibleCalculator?e.wtTable.getFirstVisibleColumn():e.wtViewport.columnsRenderCalculator?e.wtTable.getFirstRenderedColumn():-1},getLastVisibleColumn:function(){var e=this.hot.view.wt;return e.wtViewport.columnsVisibleCalculator?e.wtTable.getLastVisibleColumn():e.wtViewport.columnsRenderCalculator?e.wtTable.getLastRenderedColumn():-1},findColumnsWhereHeaderWasChanged:function(){var e=this.hot.getColHeader(),t=P.get(this).cachedColumnHeaders,n=v(e,function(e,n,o){var r=t.length;return(r-1<o||t[o]!==n)&&e.push(o),r-1<o?t.push(n):t[o]=n,e},[]);return n},clearCache:function(){var e=void 0!==arguments[0]?arguments[0]:[],t=this;e.length?g(e,function(e){return t.widths[e]=void 0}):this.widths.length=0},isNeedRecalculate:function(){return!!w(this.widths,function(e){return void 0===e}).length},onBeforeRender:function(){var e=this.hot.renderCall,t=this.hot.countRows();t&&(this.calculateColumnsWidth({from:this.getFirstVisibleColumn(),to:this.getLastVisibleColumn()},void 0,e),this.isNeedRecalculate()&&!this.inProgress&&this.calculateAllColumnsWidth())},onAfterLoadData:function(){var e=this;this.hot.view?this.recalculateAllColumnsWidth():setTimeout(function(){e.hot&&e.recalculateAllColumnsWidth()},0)},onBeforeChange:function(e){var t=this,n=y(e,function(e){var n=e,o=(n[0],n[1]);return t.hot.propToCol(o)});this.clearCache(n)},onBeforeColumnResize:function(e,t,n){return n&&(this.calculateColumnsWidth(e,void 0,!0),t=this.getColumnWidth(e,void 0,!1)),t},onAfterInit:function(){P.get(this).cachedColumnHeaders=this.hot.getColHeader()},destroy:function(){this.ghostTable.clean(),$traceurRuntime.superGet(this,L.prototype,"destroy").call(this)}},{get CALCULATION_STEP(){return 50},get SYNC_CALCULATION_LIMIT(){return 50}},p),x("autoColumnSize",N)},{"3rdparty/walkontable/src/calculator/viewportColumns":4,_base:62,"helpers/array":43,"helpers/dom/element":47,"helpers/feature":49,"helpers/number":52,"helpers/object":53,"helpers/string":55,plugins:61,"utils/ghostTable":128,"utils/samplesGenerator":131}],64:[function(e,t,n){"use strict";Object.defineProperties(n,{AutoRowSize:{get:function(){return k}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d,h,f=(o=e("_base"),o&&o.__esModule&&o||{default:o}).default,p=(r=e("helpers/array"),r&&r.__esModule&&r||{default:r}),m=(p.arrayEach,p.arrayFilter),g=(i=e("helpers/feature"),i&&i.__esModule&&i||{default:i}),w=g.cancelAnimationFrame,v=g.requestAnimationFrame,y=(s=e("helpers/dom/element"),s&&s.__esModule&&s||{default:s}).isVisible,b=(a=e("utils/ghostTable"),a&&a.__esModule&&a||{default:a}).GhostTable,C=(l=e("helpers/object"),l&&l.__esModule&&l||{default:l}),_=C.isObject,R=(C.objectEach,u=e("helpers/number"),u&&u.__esModule&&u||{default:u}),M=R.valueAccordingPercent,S=R.rangeEach,E=(c=e("plugins"),c&&c.__esModule&&c||{default:c}).registerPlugin,O=(d=e("utils/samplesGenerator"),d&&d.__esModule&&d||{default:d}).SamplesGenerator,T=(h=e("helpers/string"),h&&h.__esModule&&h||{default:h}).isPercentValue,k=function(e){var t=this;$traceurRuntime.superConstructor(x).call(this,e),this.heights=[],this.ghostTable=new b(this.hot),this.samplesGenerator=new O(function(e,n){return e>=0?t.hot.getDataAtCell(e,n):e===-1?t.hot.getColHeader(n):null}),this.firstCalculation=!0,this.inProgress=!1,this.addHook("beforeRowResize",function(e,n,o){return t.onBeforeRowResize(e,n,o)})},x=k;$traceurRuntime.createClass(k,{isEnabled:function(){return this.hot.getSettings().autoRowSize===!0||_(this.hot.getSettings().autoRowSize)},enablePlugin:function(){var e=this;this.enabled||(this.setSamplingOptions(),this.addHook("afterLoadData",function(){return e.onAfterLoadData()}),this.addHook("beforeChange",function(t){return e.onBeforeChange(t)}),this.addHook("beforeColumnMove",function(){return e.recalculateAllRowsHeight()}),this.addHook("beforeColumnResize",function(){return e.recalculateAllRowsHeight()}),this.addHook("beforeColumnSort",function(){return e.clearCache()}),this.addHook("beforeRender",function(t){return e.onBeforeRender(t)}),this.addHook("beforeRowMove",function(t,n){return e.onBeforeRowMove(t,n)}),this.addHook("modifyRowHeight",function(t,n){return e.getRowHeight(n,t)}),this.addHook("modifyColumnHeaderHeight",function(){return e.getColumnHeaderHeight()}),$traceurRuntime.superGet(this,x.prototype,"enablePlugin").call(this))},disablePlugin:function(){$traceurRuntime.superGet(this,x.prototype,"disablePlugin").call(this)},calculateRowsHeight:function(){var e=void 0!==arguments[0]?arguments[0]:{from:0,to:this.hot.countRows()-1},t=void 0!==arguments[1]?arguments[1]:{from:0,to:this.hot.countCols()-1},n=void 0!==arguments[2]&&arguments[2],o=this;if("number"==typeof e&&(e={from:e,to:e}),"number"==typeof t&&(t={from:t,to:t}),null!==this.hot.getColHeader(0)){var r=this.samplesGenerator.generateRowSamples(-1,t);this.ghostTable.addColumnHeadersRow(r.get(-1))}S(e.from,e.to,function(e){if(n||void 0===o.heights[e]){var r=o.samplesGenerator.generateRowSamples(e,t);r.forEach(function(e,t){return o.ghostTable.addRow(t,e)})}}),this.ghostTable.rows.length&&(this.ghostTable.getHeights(function(e,t){return o.heights[e]=t}),this.ghostTable.clean())},calculateAllRowsHeight:function(){var e=void 0!==arguments[0]?arguments[0]:{from:0,to:this.hot.countCols()-1},t=this,n=0,o=this.hot.countRows()-1,r=null;this.inProgress=!0;var i=function(){return t.hot?(t.calculateRowsHeight({from:n,to:Math.min(n+x.CALCULATION_STEP,o)},e),n=n+x.CALCULATION_STEP+1,void(n<o?r=v(i):(w(r),t.inProgress=!1,t.hot.view.wt.wtOverlays.adjustElementsSize(!0),t.hot.view.wt.wtOverlays.leftOverlay.needFullRender&&t.hot.view.wt.wtOverlays.leftOverlay.clone.draw()))):(w(r),void(t.inProgress=!1))};this.firstCalculation&&this.getSyncCalculationLimit()&&(this.calculateRowsHeight({from:0,to:this.getSyncCalculationLimit()},e),this.firstCalculation=!1,n=this.getSyncCalculationLimit()+1),n<o?i():(this.inProgress=!1,this.hot.view.wt.wtOverlays.adjustElementsSize(!1))},setSamplingOptions:function(){var e=this.hot.getSettings().autoRowSize,t=e&&e.hasOwnProperty("samplingRatio")?this.hot.getSettings().autoRowSize.samplingRatio:void 0,n=e&&e.hasOwnProperty("allowSampleDuplicates")?this.hot.getSettings().autoRowSize.allowSampleDuplicates:void 0;t&&!isNaN(t)&&this.samplesGenerator.setSampleCount(parseInt(t,10)),n&&this.samplesGenerator.setAllowDuplicates(n)},recalculateAllRowsHeight:function(){y(this.hot.view.wt.wtTable.TABLE)&&(this.clearCache(),this.calculateAllRowsHeight());
},getSyncCalculationLimit:function(){var e=x.SYNC_CALCULATION_LIMIT,t=this.hot.countRows()-1;return _(this.hot.getSettings().autoRowSize)&&(e=this.hot.getSettings().autoRowSize.syncLimit,T(e)?e=M(t,e):e>>=0),Math.min(e,t)},getRowHeight:function(e){var t=arguments[1],n=t;return void 0!==this.heights[e]&&this.heights[e]>(t||0)&&(n=this.heights[e]),n},getColumnHeaderHeight:function(){return this.heights[-1]},getFirstVisibleRow:function(){var e=this.hot.view.wt;return e.wtViewport.rowsVisibleCalculator?e.wtTable.getFirstVisibleRow():e.wtViewport.rowsRenderCalculator?e.wtTable.getFirstRenderedRow():-1},getLastVisibleRow:function(){var e=this.hot.view.wt;return e.wtViewport.rowsVisibleCalculator?e.wtTable.getLastVisibleRow():e.wtViewport.rowsRenderCalculator?e.wtTable.getLastRenderedRow():-1},clearCache:function(){this.heights.length=0,this.heights[-1]=void 0},clearCacheByRange:function(e){var t=this;"number"==typeof e&&(e={from:e,to:e}),S(Math.min(e.from,e.to),Math.max(e.from,e.to),function(e){return t.heights[e]=void 0})},isNeedRecalculate:function(){return!!m(this.heights,function(e){return void 0===e}).length},onBeforeRender:function(){var e=this.hot.renderCall;this.calculateRowsHeight({from:this.getFirstVisibleRow(),to:this.getLastVisibleRow()},void 0,e);var t=this.hot.getSettings().fixedRowsBottom;if(t){var n=this.hot.countRows()-1;this.calculateRowsHeight({from:n-t,to:n})}this.isNeedRecalculate()&&!this.inProgress&&this.calculateAllRowsHeight()},onBeforeRowMove:function(e,t){this.clearCacheByRange({from:e,to:t}),this.calculateAllRowsHeight()},onBeforeRowResize:function(e,t,n){return n&&(this.calculateRowsHeight(e,void 0,!0),t=this.getRowHeight(e)),t},onAfterLoadData:function(){var e=this;this.hot.view?this.recalculateAllRowsHeight():setTimeout(function(){e.hot&&e.recalculateAllRowsHeight()},0)},onBeforeChange:function(e){var t=null;1===e.length?t=e[0][0]:e.length>1&&(t={from:e[0][0],to:e[e.length-1][0]}),null!==t&&this.clearCacheByRange(t)},destroy:function(){this.ghostTable.clean(),$traceurRuntime.superGet(this,x.prototype,"destroy").call(this)}},{get CALCULATION_STEP(){return 50},get SYNC_CALCULATION_LIMIT(){return 500}},f),E("autoRowSize",k)},{_base:62,"helpers/array":43,"helpers/dom/element":47,"helpers/feature":49,"helpers/number":52,"helpers/object":53,"helpers/string":55,plugins:61,"utils/ghostTable":128,"utils/samplesGenerator":131}],65:[function(e,t,n){"use strict";Object.defineProperties(n,{Autofill:{get:function(){return T}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d=(o=e("_base"),o&&o.__esModule&&o||{default:o}).default,h=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,f=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}).arrayIncludes,p=(s=e("helpers/dom/element"),s&&s.__esModule&&s||{default:s}),m=p.offset,g=p.outerHeight,w=p.outerWidth,v=(a=e("eventManager"),a&&a.__esModule&&a||{default:a}).eventManager,y=(l=e("plugins"),l&&l.__esModule&&l||{default:l}).registerPlugin,b=(u=e("3rdparty/walkontable/src/cell/coords"),u&&u.__esModule&&u||{default:u}).WalkontableCellCoords,C=(c=e("utils"),c&&c.__esModule&&c||{default:c}),_=C.getDeltas,R=C.getDragDirectionAndRange,M=C.DIRECTIONS,S=C.getMappedFillHandleSetting,E="insert_row",O=200,T=function(e){$traceurRuntime.superConstructor(k).call(this,e),this.eventManager=v(this),this.addingStarted=!1,this.mouseDownOnCellCorner=!1,this.mouseDragOutside=!1,this.handleDraggedCells=0,this.directions=[],this.autoInsertRow=!1},k=T;$traceurRuntime.createClass(T,{isEnabled:function(){return this.hot.getSettings().fillHandle},enablePlugin:function(){var e=this;this.enabled||(this.mapSettings(),this.registerEvents(),this.addHook("afterOnCellCornerMouseDown",function(t){return e.onAfterCellCornerMouseDown(t)}),this.addHook("afterOnCellCornerDblClick",function(t){return e.onCellCornerDblClick(t)}),this.addHook("beforeOnCellMouseOver",function(t,n,o){return e.onBeforeCellMouseOver(n)}),$traceurRuntime.superGet(this,k.prototype,"enablePlugin").call(this))},updatePlugin:function(){this.disablePlugin(),this.enablePlugin(),$traceurRuntime.superGet(this,k.prototype,"updatePlugin").call(this)},disablePlugin:function(){this.clearMappedSettings(),$traceurRuntime.superGet(this,k.prototype,"disablePlugin").call(this)},getSelectionData:function(){var e={from:this.hot.getSelectedRange().from,to:this.hot.getSelectedRange().to};return this.hot.getData(e.from.row,e.from.col,e.to.row,e.to.col)},fillIn:function(){if(this.hot.view.wt.selections.fill.isEmpty())return!1;var e=this.hot.view.wt.selections.fill.getCorners();this.resetSelectionOfDraggedArea();var t=this.getCornersOfSelectedCells(),n=R(t,e),o=n.directionOfDrag,r=n.startOfDragCoords,i=n.endOfDragCoords;if(this.hot.runHooks("modifyAutofillRange",t,e),r&&r.row>-1&&r.col>-1){var s=this.getSelectionData(),a=_(r,i,s,o);this.hot.runHooks("beforeAutofill",r,i,s),this.hot.populateFromArray(r.row,r.col,s,i.row,i.col,this.pluginName+".fill",null,o,a),this.setSelection(e)}else this.hot.selection.refreshBorders();return!0},reduceSelectionAreaIfNeeded:function(e){return e.row<0&&(e.row=0),e.col<0&&(e.col=0),e},getCoordsOfDragAndDropBorders:function(e){var t,n=this.hot.getSelectedRange().getTopLeftCorner(),o=this.hot.getSelectedRange().getBottomRightCorner();if(f(this.directions,M.vertical)&&(o.row<e.row||n.row>e.row))t=new b(e.row,o.col);else{if(!f(this.directions,M.horizontal))return;t=new b(o.row,e.col)}return this.reduceSelectionAreaIfNeeded(t)},showBorder:function(e){var t=this.getCoordsOfDragAndDropBorders(e);t&&this.redrawBorders(t)},addRow:function(){var e=this;this.hot._registerTimeout(setTimeout(function(){e.hot.alter(E,void 0,1,e.pluginName+".fill"),e.addingStarted=!1},O))},addNewRowIfNeeded:function(){if(this.hot.view.wt.selections.fill.cellRange&&this.addingStarted===!1&&this.autoInsertRow){var e=this.hot.getSelected(),t=this.hot.view.wt.selections.fill.getCorners(),n=this.hot.countRows();e[2]<n-1&&t[2]===n-1&&(this.addingStarted=!0,this.addRow())}},getCornersOfSelectedCells:function(){return this.hot.selection.isMultiple()?this.hot.view.wt.selections.area.getCorners():this.hot.view.wt.selections.current.getCorners()},getIndexOfLastAdjacentFilledInRow:function(e){for(var t,n=this.hot.getData(),o=this.hot.countRows(),r=e[2]+1;r<o;r++){for(var i=e[1];i<=e[3];i++){var s=n[r][i];if(s)return-1}var a=n[r][e[1]-1],l=n[r][e[3]+1];(a||l)&&(t=r)}return t},addSelectionFromStartAreaToSpecificRowIndex:function(e,t){this.hot.view.wt.selections.fill.clear(),this.hot.view.wt.selections.fill.add(new b(e[0],e[1])),this.hot.view.wt.selections.fill.add(new b(t,e[3]))},setSelection:function(e){this.hot.selection.setRangeStart(new b(e[0],e[1])),this.hot.selection.setRangeEnd(new b(e[2],e[3]))},selectAdjacent:function(){var e=this.getCornersOfSelectedCells(),t=this.getIndexOfLastAdjacentFilledInRow(e);return t!==-1&&(this.addSelectionFromStartAreaToSpecificRowIndex(e,t),!0)},resetSelectionOfDraggedArea:function(){this.handleDraggedCells=0,this.hot.view.wt.selections.fill.clear()},redrawBorders:function(e){this.hot.view.wt.selections.fill.clear(),this.hot.view.wt.selections.fill.add(this.hot.getSelectedRange().from),this.hot.view.wt.selections.fill.add(this.hot.getSelectedRange().to),this.hot.view.wt.selections.fill.add(e),this.hot.view.render()},getIfMouseWasDraggedOutside:function(e){var t=m(this.hot.table).top-(window.pageYOffset||document.documentElement.scrollTop)+g(this.hot.table),n=m(this.hot.table).left-(window.pageXOffset||document.documentElement.scrollLeft)+w(this.hot.table);return e.clientY>t&&e.clientX<=n},registerEvents:function(){var e=this;this.eventManager.addEventListener(document.documentElement,"mouseup",function(){return e.onMouseUp()}),this.eventManager.addEventListener(document.documentElement,"mousemove",function(t){return e.onMouseMove(t)})},onCellCornerDblClick:function(){var e=this.selectAdjacent();e&&this.fillIn()},onAfterCellCornerMouseDown:function(){this.handleDraggedCells=1,this.mouseDownOnCellCorner=!0},onBeforeCellMouseOver:function(e){this.mouseDownOnCellCorner&&!this.hot.view.isMouseDown()&&this.handleDraggedCells&&(this.handleDraggedCells++,this.showBorder(e),this.addNewRowIfNeeded())},onMouseUp:function(){this.handleDraggedCells&&(this.handleDraggedCells>1&&this.fillIn(),this.handleDraggedCells=0,this.mouseDownOnCellCorner=!1)},onMouseMove:function(e){var t=this.getIfMouseWasDraggedOutside(e);this.addingStarted===!1&&this.handleDraggedCells>0&&t?(this.mouseDragOutside=!0,this.addingStarted=!0):this.mouseDragOutside=!1,this.mouseDragOutside&&this.autoInsertRow&&this.addRow()},clearMappedSettings:function(){this.directions.length=0,this.autoInsertRow=!1},mapSettings:function(){var e=S(this.hot.getSettings().fillHandle);this.directions=e.directions,this.autoInsertRow=e.autoInsertRow},destroy:function(){$traceurRuntime.superGet(this,k.prototype,"destroy").call(this)}},{},d),y("autofill",T),h.hooks.register("modifyAutofillRange"),h.hooks.register("beforeAutofill")},{"3rdparty/walkontable/src/cell/coords":6,_base:62,browser:24,eventManager:42,"helpers/array":43,"helpers/dom/element":47,plugins:61,utils:66}],66:[function(e,t,n){"use strict";function o(e,t,n,o){var r=n.length,i=n?n[0].length:0,s=[],a=t.row-e.row,l=t.col-e.col;if(["down","up"].indexOf(o)!==-1){for(var u=[],c=0;c<=l;c++){var d=parseInt(n[0][c],10),h=parseInt(n[r-1][c],10),f=("down"===o?h-d:d-h)/(r-1)||0;u.push(f)}s.push(u)}if(["right","left"].indexOf(o)!==-1)for(var p=0;p<=a;p++){var m=parseInt(n[p][0],10),g=parseInt(n[p][i-1],10),w=("right"===o?g-m:m-g)/(i-1)||0;s.push([w])}return s}function r(e,t){var n,o,r;return t[0]===e[0]&&t[1]<e[1]?(r="left",n=new WalkontableCellCoords(t[0],t[1]),o=new WalkontableCellCoords(t[2],e[1]-1)):t[0]===e[0]&&t[3]>e[3]?(r="right",n=new WalkontableCellCoords(t[0],e[3]+1),o=new WalkontableCellCoords(t[2],t[3])):t[0]<e[0]&&t[1]===e[1]?(r="up",n=new WalkontableCellCoords(t[0],t[1]),o=new WalkontableCellCoords(e[0]-1,t[3])):t[2]>e[2]&&t[1]===e[1]&&(r="down",n=new WalkontableCellCoords(e[2]+1,t[1]),o=new WalkontableCellCoords(t[2],t[3])),{directionOfDrag:r,startOfDragCoords:n,endOfDragCoords:o}}function i(e){var t={};return e===!0?(t.directions=Object.keys(c),t.autoInsertRow=!0):l(e)?(u(e.autoInsertRow)?e.direction===c.horizontal?t.autoInsertRow=!1:t.autoInsertRow=e.autoInsertRow:t.autoInsertRow=!1,u(e.direction)?t.directions=[e.direction]:t.directions=Object.keys(c)):"string"==typeof e?(t.directions=[e],t.autoInsertRow=!0):(t.directions=[],t.autoInsertRow=!1),t}Object.defineProperties(n,{DIRECTIONS:{get:function(){return c}},getDeltas:{get:function(){return o}},getDragDirectionAndRange:{get:function(){return r}},getMappedFillHandleSetting:{get:function(){return i}},__esModule:{value:!0}});var s,a,l=(s=e("helpers/object"),s&&s.__esModule&&s||{default:s}).isObject,u=(a=e("helpers/mixed"),a&&a.__esModule&&a||{default:a}).isDefined,c={horizontal:"horizontal",vertical:"vertical"}},{"helpers/mixed":51,"helpers/object":53}],67:[function(e,t,n){"use strict";Object.defineProperties(n,{ColumnSorting:{get:function(){return M}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,h=(r=e("moment"),r&&r.__esModule&&r||{default:r}).default,f=(i=e("helpers/dom/element"),i&&i.__esModule&&i||{default:i}),p=f.addClass,m=f.hasClass,g=f.removeClass,w=(s=e("helpers/array"),s&&s.__esModule&&s||{default:s}),v=w.arrayMap,y=w.arrayReduce,b=(a=e("helpers/mixed"),a&&a.__esModule&&a||{default:a}).isEmpty,C=(l=e("_base"),l&&l.__esModule&&l||{default:l}).default,_=(u=e("plugins"),u&&u.__esModule&&u||{default:u}).registerPlugin,R=(c=e("utils/sortingAlgorithms/mergeSort"),c&&c.__esModule&&c||{default:c}).mergeSort;d.hooks.register("beforeColumnSort"),d.hooks.register("afterColumnSort");var M=function(e){$traceurRuntime.superConstructor(S).call(this,e),this.sortIndicators=[],this.lastSortedColumn=null,this.sortEmptyCells=!1},S=M;$traceurRuntime.createClass(M,{isEnabled:function(){return!!this.hot.getSettings().columnSorting},enablePlugin:function(){var e=this;if(!this.enabled){this.setPluginOptions();var t=this;this.hot.sortIndex=[],this.hot.sort=function(){var e=Array.prototype.slice.call(arguments);return t.sortByColumn.apply(t,e)},"undefined"==typeof this.hot.getSettings().observeChanges&&this.enableObserveChangesPlugin(),this.addHook("afterTrimRow",function(t){return e.sort()}),this.addHook("afterUntrimRow",function(t){return e.sort()}),this.addHook("modifyRow",function(t){return e.translateRow(t)}),this.addHook("unmodifyRow",function(t){return e.untranslateRow(t)}),this.addHook("afterUpdateSettings",function(){return e.onAfterUpdateSettings()}),this.addHook("afterGetColHeader",function(t,n){return e.getColHeader(t,n)}),this.addHook("afterOnCellMouseDown",function(t,n){return e.onAfterOnCellMouseDown(t,n)}),this.addHook("afterCreateRow",function(){t.afterCreateRow.apply(t,arguments)}),this.addHook("afterRemoveRow",function(){t.afterRemoveRow.apply(t,arguments)}),this.addHook("afterInit",function(){return e.sortBySettings()}),this.addHook("afterLoadData",function(){e.hot.sortIndex=[],e.hot.view&&e.sortBySettings()}),this.hot.view&&this.sortBySettings(),$traceurRuntime.superGet(this,S.prototype,"enablePlugin").call(this)}},disablePlugin:function(){this.hot.sort=void 0,$traceurRuntime.superGet(this,S.prototype,"disablePlugin").call(this)},onAfterUpdateSettings:function(){this.sortBySettings()},sortBySettings:function(){var e,t,n=this.hot.getSettings().columnSorting,o=this.loadSortingState();"undefined"==typeof o?(e=n.column,t=n.sortOrder):(e=o.sortColumn,t=o.sortOrder),"number"==typeof e&&(this.lastSortedColumn=e,this.sortByColumn(e,t))},setSortingColumn:function(e,t){return"undefined"==typeof e?(this.hot.sortColumn=void 0,void(this.hot.sortOrder=void 0)):(this.hot.sortColumn===e&&"undefined"==typeof t?this.hot.sortOrder===!1?this.hot.sortOrder=void 0:this.hot.sortOrder=!this.hot.sortOrder:this.hot.sortOrder="undefined"==typeof t||t,void(this.hot.sortColumn=e))},sortByColumn:function(e,t){if(this.setSortingColumn(e,t),"undefined"!=typeof this.hot.sortColumn){var n=d.hooks.run(this.hot,"beforeColumnSort",this.hot.sortColumn,this.hot.sortOrder);n!==!1&&this.sort(),this.updateOrderClass(),this.updateSortIndicator(),d.hooks.run(this.hot,"afterColumnSort",this.hot.sortColumn,this.hot.sortOrder),this.hot.render(),this.saveSortingState()}},saveSortingState:function(){var e={};"undefined"!=typeof this.hot.sortColumn&&(e.sortColumn=this.hot.sortColumn),"undefined"!=typeof this.hot.sortOrder&&(e.sortOrder=this.hot.sortOrder),(e.hasOwnProperty("sortColumn")||e.hasOwnProperty("sortOrder"))&&d.hooks.run(this.hot,"persistentStateSave","columnSorting",e)},loadSortingState:function(){var e={};return d.hooks.run(this.hot,"persistentStateLoad","columnSorting",e),e.value},updateOrderClass:function(){var e;this.hot.sortOrder===!0?e="ascending":this.hot.sortOrder===!1&&(e="descending"),this.sortOrderClass=e},enableObserveChangesPlugin:function(){var e=this;this.hot._registerTimeout(setTimeout(function(){e.hot.updateSettings({observeChanges:!0})},0))},defaultSort:function(e,t){return function(n,o){return"string"==typeof n[1]&&(n[1]=n[1].toLowerCase()),"string"==typeof o[1]&&(o[1]=o[1].toLowerCase()),n[1]===o[1]?0:b(n[1])?b(o[1])?0:t.columnSorting.sortEmptyCells&&e?-1:1:b(o[1])?b(n[1])?0:t.columnSorting.sortEmptyCells&&e?1:-1:isNaN(n[1])&&!isNaN(o[1])?e?1:-1:!isNaN(n[1])&&isNaN(o[1])?e?-1:1:(isNaN(n[1])||isNaN(o[1])||(n[1]=parseFloat(n[1]),o[1]=parseFloat(o[1])),n[1]<o[1]?e?-1:1:n[1]>o[1]?e?1:-1:0)}},dateSort:function(e,t){return function(n,o){if(n[1]===o[1])return 0;if(b(n[1]))return b(o[1])?0:t.columnSorting.sortEmptyCells&&e?-1:1;if(b(o[1]))return b(n[1])?0:t.columnSorting.sortEmptyCells&&e?1:-1;var r=h(n[1],t.dateFormat),i=h(o[1],t.dateFormat);return r.isValid()?i.isValid()?i.isAfter(r)?e?-1:1:i.isBefore(r)?e?1:-1:0:-1:1}},numericSort:function(e,t){return function(n,o){var r=parseFloat(n[1]),i=parseFloat(o[1]);if(r===i||isNaN(r)&&isNaN(i))return 0;if(t.columnSorting.sortEmptyCells){if(b(n[1]))return e?-1:1;if(b(o[1]))return e?1:-1}return isNaN(r)?1:isNaN(i)?-1:r<i?e?-1:1:r>i?e?1:-1:0}},sort:function(){if("undefined"==typeof this.hot.sortOrder)return void(this.hot.sortIndex.length=0);var e,t,n=this.hot.getCellMeta(0,this.hot.sortColumn),o=this.hot.countEmptyRows();this.hot.sortingEnabled=!1,this.hot.sortIndex.length=0,"undefined"==typeof n.columnSorting.sortEmptyCells&&(n.columnSorting={sortEmptyCells:this.sortEmptyCells}),t=this.hot.getSettings().maxRows===Number.POSITIVE_INFINITY?this.hot.countRows()-this.hot.getSettings().minSpareRows:this.hot.countRows()-o;for(var r=0,i=t;r<i;r++)this.hot.sortIndex.push([r,this.hot.getDataAtCell(r,this.hot.sortColumn)]);if(n.sortFunction)e=n.sortFunction;else switch(n.type){case"date":e=this.dateSort;break;case"numeric":e=this.numericSort;break;default:e=this.defaultSort}R(this.hot.sortIndex,e(this.hot.sortOrder,n));for(var s=this.hot.sortIndex.length;s<this.hot.countRows();s++)this.hot.sortIndex.push([s,this.hot.getDataAtCell(s,this.hot.sortColumn)]);this.hot.sortingEnabled=!0},updateSortIndicator:function(){if("undefined"!=typeof this.hot.sortOrder){var e=this.hot.getCellMeta(0,this.hot.sortColumn);this.sortIndicators[this.hot.sortColumn]=e.sortIndicator}},translateRow:function(e){return this.hot.sortingEnabled&&"undefined"!=typeof this.hot.sortOrder&&this.hot.sortIndex&&this.hot.sortIndex.length&&this.hot.sortIndex[e]?this.hot.sortIndex[e][0]:e},untranslateRow:function(e){if(this.hot.sortingEnabled&&this.hot.sortIndex&&this.hot.sortIndex.length)for(var t=0;t<this.hot.sortIndex.length;t++)if(this.hot.sortIndex[t][0]==e)return t},getColHeader:function(e,t){if(e<0||!t.parentNode)return!1;var n=t.querySelector(".colHeader"),o=(t.getAttribute("colspan"),t.parentNode.parentNode.childNodes),r=Array.prototype.indexOf.call(o,t.parentNode);r-=o.length,n&&(this.hot.getSettings().columnSorting&&e>=0&&r===-1&&p(n,"columnSorting"),g(n,"descending"),g(n,"ascending"),this.sortIndicators[e]&&e===this.hot.sortColumn&&("ascending"===this.sortOrderClass?p(n,"ascending"):"descending"===this.sortOrderClass&&p(n,"descending")))},isSorted:function(){return"undefined"!=typeof this.hot.sortColumn},afterCreateRow:function(e,t){if(this.isSorted()){for(var n=0;n<this.hot.sortIndex.length;n++)this.hot.sortIndex[n][0]>=e&&(this.hot.sortIndex[n][0]+=t);for(var n=0;n<t;n++)this.hot.sortIndex.splice(e+n,0,[e+n,this.hot.getSourceData()[e+n][this.hot.sortColumn+this.hot.colOffset()]]);this.saveSortingState()}},afterRemoveRow:function(e,t){function n(e){return y(o,function(t,n){return e>n&&t++,t},0)}if(this.isSorted()){var o=this.hot.sortIndex.splice(e,t);o=v(o,function(e){return e[0]}),this.hot.sortIndex=v(this.hot.sortIndex,function(e,t){var o=n(e[0]);return o&&(e[0]-=o),e}),this.saveSortingState()}},setPluginOptions:function(){var e=this.hot.getSettings().columnSorting;"object"==typeof e?this.sortEmptyCells=e.sortEmptyCells||!1:this.sortEmptyCells=!1},onAfterOnCellMouseDown:function(e,t){t.row>-1||m(e.realTarget,"columnSorting")&&(t.col!==this.lastSortedColumn&&(this.hot.sortOrder=!0),this.lastSortedColumn=t.col,this.sortByColumn(t.col))}},{},C),_("columnSorting",M)},{_base:62,browser:24,"helpers/array":43,"helpers/dom/element":47,"helpers/mixed":51,moment:"moment",plugins:61,"utils/sortingAlgorithms/mergeSort":132}],68:[function(e,t,n){"use strict";Object.defineProperties(n,{CommentEditor:{get:function(){return i}},__esModule:{value:!0}});var o,r=(o=e("helpers/dom/element"),o&&o.__esModule&&o||{default:o}).addClass,i=function(){this.editor=this.createEditor(),this.editorStyle=this.editor.style,this.hidden=!0,this.hide()},s=i;$traceurRuntime.createClass(i,{setPosition:function(e,t){this.editorStyle.left=e+"px",this.editorStyle.top=t+"px"},setSize:function(e,t){if(e&&t){var n=this.getInputElement();n.style.width=e+"px",n.style.height=t+"px"}},resetSize:function(){var e=this.getInputElement();e.style.width="",e.style.height=""},setReadOnlyState:function(e){var t=this.getInputElement();t.readOnly=e},show:function(){this.editorStyle.display="block",this.hidden=!1},hide:function(){this.editorStyle.display="none",this.hidden=!0},isVisible:function(){return"block"===this.editorStyle.display},setValue:function(){var e=void 0!==arguments[0]?arguments[0]:"";e=e||"",this.getInputElement().value=e},getValue:function(){return this.getInputElement().value},isFocused:function(){return document.activeElement===this.getInputElement()},focus:function(){this.getInputElement().focus()},createEditor:function(){var e,t,n=document.querySelector("."+s.CLASS_EDITOR_CONTAINER);return n||(n=document.createElement("div"),r(n,s.CLASS_EDITOR_CONTAINER),document.body.appendChild(n)),e=document.createElement("div"),r(e,s.CLASS_EDITOR),t=document.createElement("textarea"),r(t,s.CLASS_INPUT),e.appendChild(t),n.appendChild(e),e},getInputElement:function(){return this.editor.querySelector("."+s.CLASS_INPUT)},destroy:function(){this.editor.parentNode.removeChild(this.editor),this.editor=null,this.editorStyle=null}},{get CLASS_EDITOR_CONTAINER(){return"htCommentsContainer"},get CLASS_EDITOR(){return"htComments"},get CLASS_INPUT(){return"htCommentTextArea"},get CLASS_CELL(){return"htCommentCell"}})},{"helpers/dom/element":47}],69:[function(e,t,n){"use strict";var o;Object.defineProperties(n,{Comments:{get:function(){return B}},__esModule:{value:!0}});var r,i,s,a,l,u,c,d,h,f,p=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,m=(i=e("helpers/dom/element"),i&&i.__esModule&&i||{default:i}),g=m.addClass,w=m.closest,v=m.isChildOf,y=m.hasClass,b=m.offset,C=m.outerWidth,_=m.outerHeight,R=m.getScrollableElement,M=(s=e("helpers/object"),s&&s.__esModule&&s||{default:s}),S=M.deepClone,E=M.deepExtend,O=(a=e("helpers/function"),a&&a.__esModule&&a||{default:a}).debounce,T=(l=e("eventManager"),l&&l.__esModule&&l||{default:l}).EventManager,k=(u=e("3rdparty/walkontable/src/cell/coords"),u&&u.__esModule&&u||{default:u}).WalkontableCellCoords,x=(c=e("plugins"),c&&c.__esModule&&c||{default:c}).registerPlugin,D=(d=e("_base"),d&&d.__esModule&&d||{default:d}).default,H=(h=e("commentEditor"),h&&h.__esModule&&h||{default:h}).CommentEditor,A=(f=e("contextMenu/utils"),f&&f.__esModule&&f||{default:f}),P=A.checkSelectionConsistency,N=A.markLabelAsSelected,L=new WeakMap,I="comment",W="value",j="style",V="readOnly",B=function(e){$traceurRuntime.superConstructor(F).call(this,e),this.editor=null,this.eventManager=null,this.range={},this.mouseDown=!1,this.contextMenuEvent=!1,this.timer=null,this.displayDelay=250,L.set(this,{tempEditorDimensions:{},cellBelowCursor:null})},F=B;$traceurRuntime.createClass(B,(o={},Object.defineProperty(o,"isEnabled",{value:function(){return!!this.hot.getSettings().comments},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"enablePlugin",{value:function(){var e=this;this.enabled||(this.editor||(this.editor=new H),this.eventManager||(this.eventManager=new T(this)),this.addHook("afterContextMenuDefaultOptions",function(t){return e.addToContextMenu(t)}),this.addHook("afterRenderer",function(t,n,o,r,i,s){return e.onAfterRenderer(t,s)}),this.addHook("afterScrollHorizontally",function(){return e.hide()}),this.addHook("afterScrollVertically",function(){return e.hide()}),this.addHook("afterBeginEditing",function(t){return e.onAfterBeginEditing(t)}),this.registerListeners(),$traceurRuntime.superGet(this,F.prototype,"enablePlugin").call(this))},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"disablePlugin",{value:function(){$traceurRuntime.superGet(this,F.prototype,"disablePlugin").call(this)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"registerListeners",{value:function(){var e=this;this.eventManager.addEventListener(document,"mouseover",function(t){return e.onMouseOver(t)}),this.eventManager.addEventListener(document,"mousedown",function(t){return e.onMouseDown(t)}),this.eventManager.addEventListener(document,"mouseup",function(t){return e.onMouseUp(t)}),this.eventManager.addEventListener(this.editor.getInputElement(),"blur",function(t){return e.onEditorBlur(t)}),this.eventManager.addEventListener(this.editor.getInputElement(),"mousedown",function(t){return e.onEditorMouseDown(t)}),this.eventManager.addEventListener(this.editor.getInputElement(),"mouseup",function(t){return e.onEditorMouseUp(t)})},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"setRange",{value:function(e){this.range=e},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"clearRange",{value:function(){this.range={}},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"targetIsCellWithComment",{value:function(e){var t=w(e.target,"TD","TBODY");return!!(t&&y(t,"htCommentCell")&&w(t,[this.hot.rootElement]))},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"targetIsCommentTextArea",{value:function(e){return this.editor.getInputElement()===e.target},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"setComment",{value:function(e){var t;if(!this.range.from)throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');var n=this.editor.getValue(),o="";null!=e?o=e:null!=n&&(o=n);var r=this.range.from.row,i=this.range.from.col;this.updateCommentMeta(r,i,(t={},Object.defineProperty(t,W,{value:o,configurable:!0,enumerable:!0,writable:!0}),t)),this.hot.render()},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"setCommentAtCell",{value:function(e,t,n){this.setRange({from:new k(e,t)}),this.setComment(n)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"removeComment",{value:function(){var e=void 0===arguments[0]||arguments[0];if(!this.range.from)throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');this.hot.setCellMeta(this.range.from.row,this.range.from.col,I,void 0),e&&this.hot.render(),this.hide()},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"removeCommentAtCell",{value:function(e,t){var n=void 0===arguments[2]||arguments[2];this.setRange({from:new k(e,t)}),this.removeComment(n)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"getComment",{value:function(){var e=this.range.from.row,t=this.range.from.col;return this.getCommentMeta(e,t,W)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"getCommentAtCell",{value:function(e,t){return this.getCommentMeta(e,t,W)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"show",{value:function(){if(!this.range.from)throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');var e=this.hot.getCellMeta(this.range.from.row,this.range.from.col);return this.refreshEditor(!0),this.editor.setValue(e[I]?e[I][W]:""),this.editor.hidden&&this.editor.show(),!0},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"showAtCell",{value:function(e,t){return this.setRange({from:new k(e,t)}),this.show()},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"hide",{value:function(){this.editor.hidden||this.editor.hide()},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"refreshEditor",{value:function(){var e=void 0!==arguments[0]&&arguments[0];if(e||this.range.from&&this.editor.isVisible()){var t=R(this.hot.view.wt.wtTable.TABLE),n=this.hot.view.wt.wtTable.getCell(this.range.from),o=this.range.from.row,r=this.range.from.col,i=b(n),s=this.hot.view.wt.wtTable.getStretchedColumnWidth(r),a=i.top<0?0:i.top,l=i.left;this.hot.view.wt.wtViewport.hasVerticalScroll()&&t!==window&&(a-=this.hot.view.wt.wtOverlays.topOverlay.getScrollPosition()),this.hot.view.wt.wtViewport.hasHorizontalScroll()&&t!==window&&(l-=this.hot.view.wt.wtOverlays.leftOverlay.getScrollPosition());var u=l+s,c=a,d=this.getCommentMeta(o,r,j),h=this.getCommentMeta(o,r,V);d?this.editor.setSize(d.width,d.height):this.editor.resetSize(),this.editor.setReadOnlyState(h),this.editor.setPosition(u,c)}},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"checkSelectionCommentsConsistency",{value:function(){var e=this.hot.getSelectedRange();if(!e)return!1;var t=!1,n=e.from;return this.getCommentMeta(n.row,n.col,W)&&(t=!0),t},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"updateCommentMeta",{value:function(e,t,n){var o,r=this.hot.getCellMeta(e,t)[I];r?(o=S(r),E(o,n)):o=n,this.hot.setCellMeta(e,t,I,o)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"getCommentMeta",{value:function(e,t,n){var o=this.hot.getCellMeta(e,t);if(o[I])return o[I][n]},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"onMouseDown",{value:function(e){if(this.mouseDown=!0,this.hot.view&&this.hot.view.wt){if(!this.contextMenuEvent&&!this.targetIsCommentTextArea(e)){var t=w(e.target,"TD","TBODY"),n=null;t&&(n=this.hot.view.wt.wtTable.getCoords(t)),(!t||this.range.from&&n&&(this.range.from.row!==n.row||this.range.from.col!==n.col))&&this.hide()}this.contextMenuEvent=!1}},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"onMouseOver",{value:function(e){var t=this;if(!this.mouseDown&&!this.editor.isFocused()){var n=L.get(this);n.cellBelowCursor=document.elementFromPoint(e.clientX,e.clientY),O(function(){if(!y(e.target,"wtBorder")&&n.cellBelowCursor===e.target&&t.editor)if(t.targetIsCellWithComment(e)){var o=t.hot.view.wt.wtTable.getCoords(e.target),r={from:new k(o.row,o.col)};t.setRange(r),t.show()}else!v(e.target,document)||t.targetIsCommentTextArea(e)||t.editor.isFocused()||t.hide()},this.displayDelay)()}},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"onMouseUp",{value:function(e){this.mouseDown=!1},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"onAfterRenderer",{value:function(e,t){t[I]&&t[I][W]&&g(e,t.commentedCellClassName)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"onEditorBlur",{value:function(e){this.setComment()},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"onEditorMouseDown",{value:function(e){var t=L.get(this);t.tempEditorDimensions={width:C(e.target),height:_(e.target)}},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"onEditorMouseUp",{value:function(e){var t,n=L.get(this),o=C(e.target),r=_(e.target);o===n.tempEditorDimensions.width+1&&r===n.tempEditorDimensions.height+2||this.updateCommentMeta(this.range.from.row,this.range.from.col,(t={},Object.defineProperty(t,j,{value:{width:o,height:r},configurable:!0,enumerable:!0,writable:!0}),t))},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"onContextMenuAddComment",{value:function(){var e=this,t=this.hot.getSelectedRange();this.contextMenuEvent=!0,this.setRange({from:t.from}),this.show(),setTimeout(function(){e.hot&&(e.hot.deselectCell(),e.editor.focus())},10)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"onContextMenuRemoveComment",{value:function(e){this.contextMenuEvent=!0;for(var t=e.start.row;t<=e.end.row;t++)for(var n=e.start.col;n<=e.end.col;n++)this.removeCommentAtCell(t,n,!1);this.hot.render()},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"onContextMenuMakeReadOnly",{value:function(e){var t;this.contextMenuEvent=!0;for(var n=e.start.row;n<=e.end.row;n++)for(var o=e.start.col;o<=e.end.col;o++){var r=!!this.getCommentMeta(n,o,V);this.updateCommentMeta(n,o,(t={},Object.defineProperty(t,V,{value:!r,configurable:!0,enumerable:!0,writable:!0}),t))}},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"addToContextMenu",{value:function(e){var t=this;e.items.push(p.plugins.ContextMenu.SEPARATOR,{key:"commentsAddEdit",name:function(){return t.checkSelectionCommentsConsistency()?"Edit comment":"Add comment"},callback:function(){return t.onContextMenuAddComment()},disabled:function(){return!(this.getSelected()&&!this.selection.selectedHeader.corner)}},{key:"commentsRemove",name:function(){return"Delete comment"},callback:function(e,n){return t.onContextMenuRemoveComment(n);
},disabled:function(){return t.hot.selection.selectedHeader.corner}},{key:"commentsReadOnly",name:function(){var e=this,t="Read only comment",n=P(this.getSelectedRange(),function(t,n){var o=e.getCellMeta(t,n)[I];if(o&&(o=o[V]),o)return!0});return n&&(t=N(t)),t},callback:function(e,n){return t.onContextMenuMakeReadOnly(n)},disabled:function(){return t.hot.selection.selectedHeader.corner||!t.checkSelectionCommentsConsistency()}})},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"onAfterBeginEditing",{value:function(e,t){this.hide()},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"destroy",{value:function(){this.editor&&this.editor.destroy(),$traceurRuntime.superGet(this,F.prototype,"destroy").call(this)},configurable:!0,enumerable:!0,writable:!0}),o),{},D),x("comments",B)},{"3rdparty/walkontable/src/cell/coords":6,_base:62,browser:24,commentEditor:68,"contextMenu/utils":88,eventManager:42,"helpers/dom/element":47,"helpers/function":50,"helpers/object":53,plugins:61}],70:[function(e,t,n){"use strict";function o(e,t){var n;return i(t,function(t){var o=t.key?t.key.split(":"):null;if(Array.isArray(o)&&o[1]===e)return n=t,!1}),n}Object.defineProperties(n,{CommandExecutor:{get:function(){return s}},__esModule:{value:!0}});var r,i=(r=e("helpers/array"),r&&r.__esModule&&r||{default:r}).arrayEach,s=function(e){this.hot=e,this.commands={},this.commonCallback=null};$traceurRuntime.createClass(s,{registerCommand:function(e,t){this.commands[e]=t},setCommonCallback:function(e){this.commonCallback=e},execute:function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=this,s=e.split(":");e=s[0];var a=2===s.length?s[1]:null,l=this.commands[e];if(!l)throw new Error("Menu command '"+e+"' not exists.");if(a&&l.submenu&&(l=o(a,l.submenu.items)),l.disabled!==!0&&("function"!=typeof l.disabled||l.disabled.call(this.hot)!==!0)&&!l.hasOwnProperty("submenu")){var u=[];"function"==typeof l.callback&&u.push(l.callback),"function"==typeof this.commonCallback&&u.push(this.commonCallback),t.unshift(s.join(":")),i(u,function(e){return e.apply(r.hot,t)})}}},{})},{"helpers/array":43}],71:[function(e,t,n){"use strict";Object.defineProperties(n,{ContextMenu:{get:function(){return F}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d,h,l,f,p=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,m=(r=e("_base"),r&&r.__esModule&&r||{default:r}).default,g=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}).arrayEach,w=(s=e("commandExecutor"),s&&s.__esModule&&s||{default:s}).CommandExecutor,v=(a=e("eventManager"),a&&a.__esModule&&a||{default:a}).EventManager,y=(l=e("helpers/dom/element"),l&&l.__esModule&&l||{default:l}).hasClass,b=(u=e("itemsFactory"),u&&u.__esModule&&u||{default:u}).ItemsFactory,C=(c=e("menu"),c&&c.__esModule&&c||{default:c}).Menu,_=(d=e("plugins"),d&&d.__esModule&&d||{default:d}).registerPlugin,R=(h=e("helpers/dom/event"),h&&h.__esModule&&h||{default:h}),M=R.stopPropagation,S=R.pageX,E=R.pageY,O=(l=e("helpers/dom/element"),l&&l.__esModule&&l||{default:l}),T=O.getWindowScrollLeft,k=O.getWindowScrollTop,x=(f=e("predefinedItems"),f&&f.__esModule&&f||{default:f}),D=x.ROW_ABOVE,H=x.ROW_BELOW,A=x.COLUMN_LEFT,P=x.COLUMN_RIGHT,N=x.REMOVE_ROW,L=x.REMOVE_COLUMN,I=x.UNDO,W=x.REDO,j=x.READ_ONLY,V=x.ALIGNMENT,B=x.SEPARATOR,F=function(e){$traceurRuntime.superConstructor(z).call(this,e),this.eventManager=new v(this),this.commandExecutor=new w(this.hot),this.itemsFactory=null,this.menu=null},z=F;$traceurRuntime.createClass(F,{isEnabled:function(){return this.hot.getSettings().contextMenu},enablePlugin:function(){var e=this;if(!this.enabled){this.itemsFactory=new b(this.hot,z.DEFAULT_ITEMS);var t=this.hot.getSettings().contextMenu,n={items:this.itemsFactory.getItems(t)};this.registerEvents(),"function"==typeof t.callback&&this.commandExecutor.setCommonCallback(t.callback),$traceurRuntime.superGet(this,z.prototype,"enablePlugin").call(this),this.callOnPluginsReady(function(){e.hot.runHooks("afterContextMenuDefaultOptions",n),e.itemsFactory.setPredefinedItems(n.items);var o=e.itemsFactory.getItems(t);e.menu=new C(e.hot,{className:"htContextMenu",keepInViewport:!0}),e.hot.runHooks("beforeContextMenuSetItems",o),e.menu.setMenuItems(o),e.menu.addLocalHook("afterOpen",function(){return e.onMenuAfterOpen()}),e.menu.addLocalHook("afterClose",function(){return e.onMenuAfterClose()}),e.menu.addLocalHook("executeCommand",function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return e.executeCommand.apply(e,t)}),g(o,function(t){return e.commandExecutor.registerCommand(t.key,t)})})}},updatePlugin:function(){this.disablePlugin(),this.enablePlugin(),$traceurRuntime.superGet(this,z.prototype,"updatePlugin").call(this)},disablePlugin:function(){this.close(),this.menu&&(this.menu.destroy(),this.menu=null),$traceurRuntime.superGet(this,z.prototype,"disablePlugin").call(this)},registerEvents:function(){var e=this;this.eventManager.addEventListener(this.hot.rootElement,"contextmenu",function(t){return e.onContextMenu(t)})},open:function(e){this.menu&&(this.menu.open(),this.menu.setPosition({top:parseInt(E(e),10)-k(),left:parseInt(S(e),10)-T()}),this.menu.hotMenu.isHotTableEnv=this.hot.isHotTableEnv,p.eventManager.isHotTableEnv=this.hot.isHotTableEnv)},close:function(){this.menu&&this.menu.close()},executeCommand:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.commandExecutor.execute.apply(this.commandExecutor,e)},onContextMenu:function(e){function t(e){return"TD"===e.nodeName||"TD"===e.parentNode.nodeName}var n=this.hot.getSettings(),o=n.rowHeaders,r=n.colHeaders,i=e.realTarget;this.close(),y(i,"handsontableInput")||(e.preventDefault(),M(e),(o||r||t(i)||y(i,"current")&&y(i,"wtBorder"))&&this.open(e))},onMenuAfterOpen:function(){this.hot.runHooks("afterContextMenuShow",this)},onMenuAfterClose:function(){this.hot.listen(),this.hot.runHooks("afterContextMenuHide",this)},destroy:function(){this.close(),this.menu&&this.menu.destroy(),$traceurRuntime.superGet(this,z.prototype,"destroy").call(this)}},{get DEFAULT_ITEMS(){return[D,H,B,A,P,B,N,L,B,I,W,B,j,B,V]}},m),F.SEPARATOR={name:B},p.hooks.register("afterContextMenuDefaultOptions"),p.hooks.register("afterContextMenuShow"),p.hooks.register("afterContextMenuHide"),p.hooks.register("afterContextMenuExecute"),_("contextMenu",F)},{_base:62,browser:24,commandExecutor:70,eventManager:42,"helpers/array":43,"helpers/dom/element":47,"helpers/dom/event":48,itemsFactory:73,menu:74,plugins:61,predefinedItems:75}],72:[function(e,t,n){"use strict";Object.defineProperties(n,{Cursor:{get:function(){return f}},__esModule:{value:!0}});var o,r,i,s=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,a=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),l=a.getWindowScrollLeft,u=a.getWindowScrollTop,c=(i=e("helpers/dom/event"),i&&i.__esModule&&i||{default:i}),d=c.pageX,h=c.pageY,f=function(e){var t,n,o,r,i,s,a=u(),c=l();this.type=this.getSourceType(e),"literal"===this.type?(t=parseInt(e.top,10),o=parseInt(e.left,10),i=e.height||0,s=e.width||0,n=t,r=o,t+=a,o+=c):"event"===this.type&&(t=parseInt(h(e),10),o=parseInt(d(e),10),i=e.target.clientHeight,s=e.target.clientWidth,n=t-a,r=o-c),this.top=t,this.topRelative=n,this.left=o,this.leftRelative=r,this.scrollTop=a,this.scrollLeft=c,this.cellHeight=i,this.cellWidth=s};$traceurRuntime.createClass(f,{getSourceType:function(e){var t="literal";return e instanceof Event&&(t="event"),t},fitsAbove:function(e){return this.topRelative>=e.offsetHeight},fitsBelow:function(e){var t=void 0!==arguments[1]?arguments[1]:window.innerHeight;return this.topRelative+e.offsetHeight<=t},fitsOnRight:function(e){var t=void 0!==arguments[1]?arguments[1]:window.innerWidth;return this.leftRelative+this.cellWidth+e.offsetWidth<=t},fitsOnLeft:function(e){return this.leftRelative>=e.offsetWidth}},{}),s.plugins.utils=s.plugins.utils||{},s.plugins.utils.Cursor=f},{browser:24,"helpers/dom/element":47,"helpers/dom/event":48}],73:[function(e,t,n){"use strict";function o(){var e=void 0!==arguments[0]?arguments[0]:null,t=void 0!==arguments[1]?arguments[1]:[],n=void 0!==arguments[2]?arguments[2]:{},o=[];return e&&e.items?e=e.items:Array.isArray(e)||(e=t),u(e)?l(e,function(e,t){var r=n["string"==typeof e?e:t];r||(r=e),u(e)?c(r,e):"string"==typeof r&&(r={name:r}),void 0===r.key&&(r.key=t),o.push(r)}):d(e,function(e,t){var r=n[e];!r&&p.indexOf(e)>=0||(r||(r={name:e,key:t+""}),u(e)&&c(r,e),void 0===r.key&&(r.key=t),o.push(r))}),o}Object.defineProperties(n,{ItemsFactory:{get:function(){return g}},__esModule:{value:!0}});var r,i,s,a=(r=e("helpers/object"),r&&r.__esModule&&r||{default:r}),l=a.objectEach,u=a.isObject,c=a.extend,d=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}).arrayEach,h=(s=e("predefinedItems"),s&&s.__esModule&&s||{default:s}),f=h.SEPARATOR,p=h.ITEMS,m=h.predefinedItems,g=function(e){var t=void 0!==arguments[1]?arguments[1]:null;this.hot=e,this.predefinedItems=m(),this.defaultOrderPattern=t};$traceurRuntime.createClass(g,{setPredefinedItems:function(e){var t=this,n={};this.defaultOrderPattern.length=0,l(e,function(e,o){var r="";e.name===f?(n[f]=e,r=f):isNaN(parseInt(o,10))?(e.key=void 0===e.key?o:e.key,n[o]=e,r=e.key):(n[e.key]=e,r=e.key),t.defaultOrderPattern.push(r)}),this.predefinedItems=n},getItems:function(){var e=void 0!==arguments[0]?arguments[0]:null;return o(e,this.defaultOrderPattern,this.predefinedItems)}},{})},{"helpers/array":43,"helpers/object":53,predefinedItems:75}],74:[function(e,t,n){"use strict";Object.defineProperties(n,{Menu:{get:function(){return z}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d,h,f,p,m=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,g=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),w=g.addClass,v=g.empty,y=g.fastInnerHTML,b=g.getScrollbarWidth,C=g.isChildOf,_=g.removeClass,R=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}),M=R.arrayEach,S=R.arrayFilter,E=R.arrayReduce,O=(s=e("cursor"),s&&s.__esModule&&s||{default:s}).Cursor,T=(a=e("eventManager"),a&&a.__esModule&&a||{default:a}).EventManager,k=(l=e("helpers/object"),l&&l.__esModule&&l||{default:l}).mixin,x=(u=e("helpers/function"),u&&u.__esModule&&u||{default:u}).debounce,D=(c=e("utils"),c&&c.__esModule&&c||{default:c}),H=D.filterSeparators,A=D.hasSubMenu,P=D.isDisabled,N=D.isItemHidden,L=D.isSeparator,I=D.isSelectionDisabled,W=D.normalizeSelection,j=(d=e("helpers/unicode"),d&&d.__esModule&&d||{default:d}).KEY_CODES,V=(h=e("mixins/localHooks"),h&&h.__esModule&&h||{default:h}).localHooks,B=(f=e("predefinedItems"),f&&f.__esModule&&f||{default:f}).SEPARATOR,F=(p=e("helpers/dom/event"),p&&p.__esModule&&p||{default:p}).stopImmediatePropagation,z=function(e,t){this.hot=e,this.options=t||{parent:null,name:null,className:"",keepInViewport:!0,standalone:!1},this.eventManager=new T(this),this.container=this.createContainer(this.options.name),this.hotMenu=null,this.hotSubMenus={},this.parentMenu=this.options.parent||null,this.menuItems=null,this.origOutsideClickDeselects=null,this.offset={above:0,below:0,left:0,right:0},this._afterScrollCallback=null,this.registerEvents()},Y=z;$traceurRuntime.createClass(z,{registerEvents:function(){var e=this;this.eventManager.addEventListener(document.documentElement,"mousedown",function(t){return e.onDocumentMouseDown(t)})},setMenuItems:function(e){this.menuItems=e},setOffset:function(e){var t=void 0!==arguments[1]?arguments[1]:0;this.offset[e]=t},isSubMenu:function(){return null!==this.parentMenu},open:function(){var e=this;this.container.removeAttribute("style"),this.container.style.display="block";var t=x(function(t){return e.openSubMenu(t)},300),n=S(this.menuItems,function(t){return N(t,e.hot)});n=H(n,B);var o={data:n,colHeaders:!1,colWidths:[200],autoRowSize:!1,readOnly:!0,copyPaste:!1,columns:[{data:"name",renderer:function(t,n,o,r,i,s){return e.menuItemRenderer(t,n,o,r,i,s)}}],renderAllRows:!0,fragmentSelection:"cell",disableVisualSelection:"area",beforeKeyDown:function(t){return e.onBeforeKeyDown(t)},afterOnCellMouseOver:function(n,o,r){e.isAllSubMenusClosed()?t(o.row):e.openSubMenu(o.row)}};this.origOutsideClickDeselects=this.hot.getSettings().outsideClickDeselects,this.hot.getSettings().outsideClickDeselects=!1,this.hotMenu=new m.Core(this.container,o),this.hotMenu.addHook("afterInit",function(){return e.onAfterInit()}),this.hotMenu.init(),this.hotMenu.listen(),this.blockMainTableCallbacks(),this.runLocalHooks("afterOpen")},close:function(){var e=void 0!==arguments[0]&&arguments[0];this.isOpened()&&(e&&this.parentMenu?this.parentMenu.close():(this.closeAllSubMenus(),this.container.style.display="none",this.releaseMainTableCallbacks(),this.hotMenu.destroy(),this.hotMenu=null,this.hot.getSettings().outsideClickDeselects=this.origOutsideClickDeselects,this.runLocalHooks("afterClose"),this.parentMenu&&this.parentMenu.hotMenu.listen()))},openSubMenu:function(e){if(!this.hotMenu)return!1;var t=this.hotMenu.getCell(e,0);if(this.closeAllSubMenus(),!t||!A(t))return!1;var n=this.hotMenu.getSourceDataAtRow(e),o=new Y(this.hot,{parent:this,name:n.name,className:this.options.className,keepInViewport:!0});return o.setMenuItems(n.submenu.items),o.open(),o.setPosition(t.getBoundingClientRect()),this.hotSubMenus[n.key]=o,o},closeSubMenu:function(e){var t=this.hotMenu.getSourceDataAtRow(e),n=this.hotSubMenus[t.key];n&&(n.destroy(),delete this.hotSubMenus[t.key])},closeAllSubMenus:function(){var e=this;M(this.hotMenu.getData(),function(t,n){return e.closeSubMenu(n)})},isAllSubMenusClosed:function(){return 0===Object.keys(this.hotSubMenus).length},destroy:function(){this.clearLocalHooks(),this.close(),this.parentMenu=null,this.eventManager.destroy()},isOpened:function(){return null!==this.hotMenu},executeCommand:function(e){if(this.isOpened()&&this.hotMenu.getSelected()){var t=this.hotMenu.getSourceDataAtRow(this.hotMenu.getSelected()[0]);if(this.runLocalHooks("select",t,e),t.isCommand!==!1&&t.name!==B){var n=this.hot.getSelectedRange(),o=n?W(n):{},r=!0;(t.disabled===!0||"function"==typeof t.disabled&&t.disabled.call(this.hot)===!0||t.submenu)&&(r=!1),this.runLocalHooks("executeCommand",t.key,o,e),this.isSubMenu()&&this.parentMenu.runLocalHooks("executeCommand",t.key,o,e),r&&this.close(!0)}}},setPosition:function(e){var t=new O(e);this.options.keepInViewport?(t.fitsBelow(this.container)?this.setPositionBelowCursor(t):t.fitsAbove(this.container)?this.setPositionAboveCursor(t):this.setPositionBelowCursor(t),t.fitsOnRight(this.container)?this.setPositionOnRightOfCursor(t):this.setPositionOnLeftOfCursor(t)):(this.setPositionBelowCursor(t),this.setPositionOnRightOfCursor(t))},setPositionAboveCursor:function(e){var t=this.offset.above+e.top-this.container.offsetHeight;this.isSubMenu()&&(t=e.top+e.cellHeight-this.container.offsetHeight+3),this.container.style.top=t+"px"},setPositionBelowCursor:function(e){var t=this.offset.below+e.top;this.isSubMenu()&&(t=e.top-1),this.container.style.top=t+"px"},setPositionOnRightOfCursor:function(e){var t;t=this.isSubMenu()?1+e.left+e.cellWidth:this.offset.right+1+e.left,this.container.style.left=t+"px"},setPositionOnLeftOfCursor:function(e){var t=this.offset.left+e.left-this.container.offsetWidth+b()+4;this.container.style.left=t+"px"},selectFirstCell:function(){var e=this.hotMenu.getCell(0,0);L(e)||P(e)||I(e)?this.selectNextCell(0,0):this.hotMenu.selectCell(0,0)},selectLastCell:function(){var e=this.hotMenu.countRows()-1,t=this.hotMenu.getCell(e,0);L(t)||P(t)||I(t)?this.selectPrevCell(e,0):this.hotMenu.selectCell(e,0)},selectNextCell:function(e,t){var n=e+1,o=n<this.hotMenu.countRows()?this.hotMenu.getCell(n,t):null;o&&(L(o)||P(o)||I(o)?this.selectNextCell(n,t):this.hotMenu.selectCell(n,t))},selectPrevCell:function(e,t){var n=e-1,o=n>=0?this.hotMenu.getCell(n,t):null;o&&(L(o)||P(o)||I(o)?this.selectPrevCell(n,t):this.hotMenu.selectCell(n,t))},menuItemRenderer:function(e,t,n,o,r,i){var s=this,a=e.getSourceDataAtRow(n),l=document.createElement("div"),u=function(e){return e.hasOwnProperty("submenu")},c=function(e){return new RegExp(B,"i").test(e.name)},d=function(e){return e.disabled===!0||"function"==typeof e.disabled&&e.disabled.call(s.hot)===!0},h=function(e){return e.disableSelection};"function"==typeof i&&(i=i.call(this.hot)),v(t),w(l,"htItemWrapper"),t.appendChild(l),c(a)?w(t,"htSeparator"):"function"==typeof a.renderer?(w(t,"htCustomMenuRenderer"),t.appendChild(a.renderer(e,l,n,o,r,i))):y(l,i),d(a)?(w(t,"htDisabled"),this.eventManager.addEventListener(t,"mouseenter",function(){return e.deselectCell()})):h(a)?(w(t,"htSelectionDisabled"),this.eventManager.addEventListener(t,"mouseenter",function(){return e.deselectCell()})):u(a)?(w(t,"htSubmenu"),h(a)?this.eventManager.addEventListener(t,"mouseenter",function(){return e.deselectCell()}):this.eventManager.addEventListener(t,"mouseenter",function(){return e.selectCell(n,o,void 0,void 0,!1,!1)})):(_(t,"htSubmenu"),_(t,"htDisabled"),h(a)?this.eventManager.addEventListener(t,"mouseenter",function(){return e.deselectCell()}):this.eventManager.addEventListener(t,"mouseenter",function(){return e.selectCell(n,o,void 0,void 0,!1,!1)}))},createContainer:function(){var e=void 0!==arguments[0]?arguments[0]:null;e&&(e=e.replace(/ /g,"_"),e=this.options.className+"Sub_"+e);var t;return t=e?document.querySelector("."+this.options.className+"."+e):document.querySelector("."+this.options.className),t||(t=document.createElement("div"),w(t,"htMenu "+this.options.className),e&&w(t,e),document.getElementsByTagName("body")[0].appendChild(t)),t},blockMainTableCallbacks:function(){this._afterScrollCallback=function(){},this.hot.addHook("afterScrollVertically",this._afterScrollCallback),this.hot.addHook("afterScrollHorizontally",this._afterScrollCallback)},releaseMainTableCallbacks:function(){this._afterScrollCallback&&(this.hot.removeHook("afterScrollVertically",this._afterScrollCallback),this.hot.removeHook("afterScrollHorizontally",this._afterScrollCallback),this._afterScrollCallback=null)},onBeforeKeyDown:function(e){var t=this.hotMenu.getSelected(),n=!1;switch(e.keyCode){case j.ESCAPE:this.close(),n=!0;break;case j.ENTER:t&&(this.hotMenu.getSourceDataAtRow(t[0]).submenu?n=!0:(this.executeCommand(e),this.close(!0)));break;case j.ARROW_DOWN:t?this.selectNextCell(t[0],t[1]):this.selectFirstCell(),n=!0;break;case j.ARROW_UP:t?this.selectPrevCell(t[0],t[1]):this.selectLastCell(),n=!0;break;case j.ARROW_RIGHT:if(t){var o=this.openSubMenu(t[0]);o&&o.selectFirstCell()}n=!0;break;case j.ARROW_LEFT:t&&this.isSubMenu()&&(this.close(),this.parentMenu&&this.parentMenu.hotMenu.listen(),n=!0)}n&&(e.preventDefault(),F(e))},onAfterInit:function(){var e=this.hotMenu.getSettings().data,t=this.hotMenu.view.wt.wtTable.hider.style,n=this.hotMenu.view.wt.wtTable.holder.style,o=parseInt(t.width,10),r=E(e,function(e,t){return e+(t.name===B?1:26)},0);n.width=o+22+"px",n.height=r+4+"px",t.height=n.height},onDocumentMouseDown:function(e){this.isOpened()&&(this.container&&C(e.target,this.container)&&this.executeCommand(e),this.options.standalone&&this.hotMenu&&!C(e.target,this.hotMenu.rootElement)?this.close(!0):(this.isAllSubMenusClosed()||this.isSubMenu())&&!C(e.target,".htMenu")&&C(e.target,document)&&this.close(!0))}},{}),k(z,V)},{browser:24,cursor:72,eventManager:42,"helpers/array":43,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/function":50,"helpers/object":53,"helpers/unicode":56,"mixins/localHooks":58,predefinedItems:75,utils:88}],75:[function(e,t,n){"use strict";function o(){var e={};return y(oe,function(t,n){return e[n]=t()}),e}function r(e,t){ne.indexOf(e)===-1&&(oe[e]=t)}var i;Object.defineProperties(n,{ALIGNMENT:{get:function(){return a.KEY}},CLEAR_COLUMN:{get:function(){return l.KEY}},COLUMN_LEFT:{get:function(){return u.KEY}},COLUMN_RIGHT:{get:function(){return c.KEY}},READ_ONLY:{get:function(){return d.KEY}},REDO:{get:function(){return h.KEY}},REMOVE_COLUMN:{get:function(){return f.KEY}},REMOVE_ROW:{get:function(){return p.KEY}},ROW_ABOVE:{get:function(){return m.KEY}},ROW_BELOW:{get:function(){return g.KEY}},SEPARATOR:{get:function(){return w.KEY}},UNDO:{get:function(){return v.KEY}},ITEMS:{get:function(){return ne}},predefinedItems:{get:function(){return o}},addItem:{get:function(){return r}},__esModule:{value:!0}});var s,a,l,u,c,d,h,f,p,m,g,w,v,a,l,u,c,d,h,f,p,m,g,w,v,y=(s=e("helpers/object"),s&&s.__esModule&&s||{default:s}).objectEach,b=(a=e("predefinedItems/alignment"),a&&a.__esModule&&a||{default:a}),C=b.alignmentItem,_=b.KEY,R=(l=e("predefinedItems/clearColumn"),l&&l.__esModule&&l||{default:l}),M=R.clearColumnItem,S=R.KEY,E=(u=e("predefinedItems/columnLeft"),u&&u.__esModule&&u||{default:u}),O=E.columnLeftItem,T=E.KEY,k=(c=e("predefinedItems/columnRight"),c&&c.__esModule&&c||{default:c}),x=k.columnRightItem,D=k.KEY,H=(d=e("predefinedItems/readOnly"),d&&d.__esModule&&d||{default:d}),A=H.readOnlyItem,P=H.KEY,N=(h=e("predefinedItems/redo"),h&&h.__esModule&&h||{default:h}),L=N.redoItem,I=N.KEY,W=(f=e("predefinedItems/removeColumn"),f&&f.__esModule&&f||{default:f}),j=W.removeColumnItem,V=W.KEY,B=(p=e("predefinedItems/removeRow"),p&&p.__esModule&&p||{default:p}),F=B.removeRowItem,z=B.KEY,Y=(m=e("predefinedItems/rowAbove"),m&&m.__esModule&&m||{default:m}),U=Y.rowAboveItem,G=Y.KEY,$=(g=e("predefinedItems/rowBelow"),g&&g.__esModule&&g||{default:g}),K=$.rowBelowItem,X=$.KEY,q=(w=e("predefinedItems/separator"),w&&w.__esModule&&w||{default:w}),Z=q.separatorItem,J=q.KEY,Q=(v=e("predefinedItems/undo"),v&&v.__esModule&&v||{default:v}),ee=Q.undoItem,te=Q.KEY,a=(a=e("predefinedItems/alignment"),a&&a.__esModule&&a||{default:a}),l=(l=e("predefinedItems/clearColumn"),l&&l.__esModule&&l||{default:l}),u=(u=e("predefinedItems/columnLeft"),u&&u.__esModule&&u||{default:u}),c=(c=e("predefinedItems/columnRight"),c&&c.__esModule&&c||{default:c}),d=(d=e("predefinedItems/readOnly"),d&&d.__esModule&&d||{default:d}),h=(h=e("predefinedItems/redo"),h&&h.__esModule&&h||{default:h}),f=(f=e("predefinedItems/removeColumn"),f&&f.__esModule&&f||{default:f}),p=(p=e("predefinedItems/removeRow"),p&&p.__esModule&&p||{default:p}),m=(m=e("predefinedItems/rowAbove"),m&&m.__esModule&&m||{default:m}),g=(g=e("predefinedItems/rowBelow"),g&&g.__esModule&&g||{default:g}),w=(w=e("predefinedItems/separator"),w&&w.__esModule&&w||{default:w}),v=(v=e("predefinedItems/undo"),v&&v.__esModule&&v||{default:v}),ne=[G,X,T,D,S,z,V,te,I,P,_,J],oe=(i={},Object.defineProperty(i,J,{value:Z,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(i,G,{value:U,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(i,X,{value:K,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(i,T,{value:O,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(i,D,{value:x,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(i,S,{value:M,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(i,z,{value:F,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(i,V,{value:j,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(i,te,{value:ee,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(i,I,{value:L,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(i,P,{value:A,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(i,_,{value:C,configurable:!0,enumerable:!0,writable:!0}),i)},{"helpers/object":53,"predefinedItems/alignment":76,"predefinedItems/clearColumn":77,"predefinedItems/columnLeft":78,"predefinedItems/columnRight":79,"predefinedItems/readOnly":80,"predefinedItems/redo":81,"predefinedItems/removeColumn":82,"predefinedItems/removeRow":83,"predefinedItems/rowAbove":84,"predefinedItems/rowBelow":85,"predefinedItems/separator":86,"predefinedItems/undo":87}],76:[function(e,t,n){"use strict";function o(){return{key:h,name:"Alignment",disabled:function(){return!(this.getSelectedRange()&&!this.selection.selectedHeader.corner)},submenu:{items:[{key:h+":left",name:function(){var e=this,t="Left",n=u(this.getSelectedRange(),function(t,n){var o=e.getCellMeta(t,n).className;if(o&&o.indexOf("htLeft")!==-1)return!0});return n&&(t=c(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=l(t,function(t,n){return e.getCellMeta(t,n).className}),o="horizontal",r="htLeft";this.runHooks("beforeCellAlignment",n,t,o,r),a(t,o,r,function(t,n){return e.getCellMeta(t,n)}),this.render()},disabled:!1},{key:h+":center",name:function(){var e=this,t="Center",n=u(this.getSelectedRange(),function(t,n){var o=e.getCellMeta(t,n).className;if(o&&o.indexOf("htCenter")!==-1)return!0});return n&&(t=c(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=l(t,function(t,n){return e.getCellMeta(t,n).className}),o="horizontal",r="htCenter";this.runHooks("beforeCellAlignment",n,t,o,r),a(t,o,r,function(t,n){return e.getCellMeta(t,n)}),this.render()},disabled:!1},{key:h+":right",name:function(){var e=this,t="Right",n=u(this.getSelectedRange(),function(t,n){var o=e.getCellMeta(t,n).className;if(o&&o.indexOf("htRight")!==-1)return!0});return n&&(t=c(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=l(t,function(t,n){return e.getCellMeta(t,n).className}),o="horizontal",r="htRight";this.runHooks("beforeCellAlignment",n,t,o,r),a(t,o,r,function(t,n){return e.getCellMeta(t,n)}),this.render()},disabled:!1},{key:h+":justify",name:function(){var e=this,t="Justify",n=u(this.getSelectedRange(),function(t,n){var o=e.getCellMeta(t,n).className;if(o&&o.indexOf("htJustify")!==-1)return!0});return n&&(t=c(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=l(t,function(t,n){return e.getCellMeta(t,n).className}),o="horizontal",r="htJustify";this.runHooks("beforeCellAlignment",n,t,o,r),a(t,o,r,function(t,n){return e.getCellMeta(t,n)}),this.render()},disabled:!1},{name:d},{key:h+":top",name:function(){var e=this,t="Top",n=u(this.getSelectedRange(),function(t,n){var o=e.getCellMeta(t,n).className;if(o&&o.indexOf("htTop")!==-1)return!0});return n&&(t=c(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=l(t,function(t,n){return e.getCellMeta(t,n).className}),o="vertical",r="htTop";this.runHooks("beforeCellAlignment",n,t,o,r),a(t,o,r,function(t,n){return e.getCellMeta(t,n)}),this.render()},disabled:!1},{key:h+":middle",name:function(){var e=this,t="Middle",n=u(this.getSelectedRange(),function(t,n){var o=e.getCellMeta(t,n).className;if(o&&o.indexOf("htMiddle")!==-1)return!0});return n&&(t=c(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=l(t,function(t,n){return e.getCellMeta(t,n).className}),o="vertical",r="htMiddle";this.runHooks("beforeCellAlignment",n,t,o,r),a(t,o,r,function(t,n){return e.getCellMeta(t,n)}),this.render()},disabled:!1},{key:h+":bottom",name:function(){var e=this,t="Bottom",n=u(this.getSelectedRange(),function(t,n){var o=e.getCellMeta(t,n).className;if(o&&o.indexOf("htBottom")!==-1)return!0});return n&&(t=c(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=l(t,function(t,n){return e.getCellMeta(t,n).className}),o="vertical",r="htBottom";this.runHooks("beforeCellAlignment",n,t,o,r),a(t,o,r,function(t,n){return e.getCellMeta(t,n)}),this.render()},disabled:!1}]}}}Object.defineProperties(n,{KEY:{get:function(){return h}},alignmentItem:{get:function(){return o}},__esModule:{value:!0}});var r,i,s=(r=e("utils"),r&&r.__esModule&&r||{default:r}),a=s.align,l=s.getAlignmentClasses,u=s.checkSelectionConsistency,c=s.markLabelAsSelected,d=(i=e("separator"),i&&i.__esModule&&i||{default:i}).KEY,h="alignment"},{separator:86,utils:88}],77:[function(e,t,n){"use strict";function o(){return{key:s,name:"Clear column",callback:function(e,t){var n=t.start.col;this.countRows()&&this.populateFromArray(0,n,[[null]],Math.max(t.start.row,t.end.row),n,"ContextMenu.clearColumn")},disabled:function(){var e=i(this);if(!e)return!0;var t=[e[0],0,e[0],this.countCols()-1],n=t.join(",")==e.join(",");return e[1]<0||this.countCols()>=this.getSettings().maxCols||n}}}Object.defineProperties(n,{KEY:{get:function(){return s}},clearColumnItem:{get:function(){return o}},__esModule:{value:!0}});var r,i=(r=e("utils"),r&&r.__esModule&&r||{default:r}).getValidSelection,s="clear_column"},{utils:88}],78:[function(e,t,n){"use strict";function o(){return{key:s,name:"Insert column on the left",callback:function(e,t){this.alter("insert_col",t.start.col,1,"ContextMenu.columnLeft")},disabled:function(){var e=i(this);if(!e)return!0;if(!this.isColumnModificationAllowed())return!0;var t=[e[0],0,e[0],this.countCols()-1],n=t.join(",")==e.join(","),o=1===this.countCols();return e[1]<0||this.countCols()>=this.getSettings().maxCols||!o&&n},hidden:function(){return!this.getSettings().allowInsertColumn}}}Object.defineProperties(n,{KEY:{get:function(){return s}},columnLeftItem:{get:function(){return o}},__esModule:{value:!0}});var r,i=(r=e("utils"),r&&r.__esModule&&r||{default:r}).getValidSelection,s="col_left"},{utils:88}],79:[function(e,t,n){"use strict";function o(){return{key:s,name:"Insert column on the right",callback:function(e,t){this.alter("insert_col",t.end.col+1,1,"ContextMenu.columnRight")},disabled:function(){var e=i(this);if(!e)return!0;if(!this.isColumnModificationAllowed())return!0;var t=[e[0],0,e[0],this.countCols()-1],n=t.join(",")==e.join(","),o=1===this.countCols();return e[1]<0||this.countCols()>=this.getSettings().maxCols||!o&&n},hidden:function(){return!this.getSettings().allowInsertColumn}}}Object.defineProperties(n,{KEY:{get:function(){return s}},columnRightItem:{get:function(){return o}},__esModule:{value:!0}});var r,i=(r=e("utils"),r&&r.__esModule&&r||{default:r}).getValidSelection,s="col_right"},{utils:88}],80:[function(e,t,n){"use strict";function o(){return{key:l,name:function(){var e=this,t="Read only",n=s(this.getSelectedRange(),function(t,n){return e.getCellMeta(t,n).readOnly});return n&&(t=a(t)),t},callback:function(){var e=this,t=this.getSelectedRange(),n=s(t,function(t,n){return e.getCellMeta(t,n).readOnly});t.forAll(function(t,o){e.setCellMeta(t,o,"readOnly",!n)}),this.render()},disabled:function(){return!(this.getSelectedRange()&&!this.selection.selectedHeader.corner)}}}Object.defineProperties(n,{KEY:{get:function(){return l}},readOnlyItem:{get:function(){return o}},__esModule:{value:!0}});var r,i=(r=e("utils"),r&&r.__esModule&&r||{default:r}),s=i.checkSelectionConsistency,a=i.markLabelAsSelected,l="make_read_only"},{utils:88}],81:[function(e,t,n){"use strict";function o(){return{key:r,name:"Redo",callback:function(){this.redo()},disabled:function(){return this.undoRedo&&!this.undoRedo.isRedoAvailable()}}}Object.defineProperties(n,{KEY:{get:function(){return r}},redoItem:{get:function(){return o}},__esModule:{value:!0}});var r="redo"},{}],82:[function(e,t,n){"use strict";function o(){return{key:s,name:"Remove column",callback:function(e,t){var n=t.end.col-t.start.col+1;this.alter("remove_col",t.start.col,n,"ContextMenu.removeColumn")},disabled:function(){var e=i(this),t=this.countCols();return!e||this.selection.selectedHeader.rows||this.selection.selectedHeader.corner||!this.isColumnModificationAllowed()||!t},hidden:function(){return!this.getSettings().allowRemoveColumn}}}Object.defineProperties(n,{KEY:{get:function(){return s}},removeColumnItem:{get:function(){return o}},__esModule:{value:!0}});var r,i=(r=e("utils"),r&&r.__esModule&&r||{default:r}).getValidSelection,s="remove_col"},{utils:88}],83:[function(e,t,n){"use strict";function o(){return{key:s,name:"Remove row",callback:function(e,t){var n=t.end.row-t.start.row+1;this.alter("remove_row",t.start.row,n,"ContextMenu.removeRow")},disabled:function(){var e=i(this),t=this.countRows();return!e||this.selection.selectedHeader.cols||this.selection.selectedHeader.corner||!t},hidden:function(){return!this.getSettings().allowRemoveRow}}}Object.defineProperties(n,{KEY:{get:function(){return s}},removeRowItem:{get:function(){return o}},__esModule:{value:!0}});var r,i=(r=e("utils"),r&&r.__esModule&&r||{default:r}).getValidSelection,s="remove_row"},{utils:88}],84:[function(e,t,n){"use strict";function o(){return{key:s,name:"Insert row above",callback:function(e,t){this.alter("insert_row",t.start.row,1,"ContextMenu.rowAbove");
},disabled:function(){var e=i(this);return!e||this.selection.selectedHeader.cols||this.countRows()>=this.getSettings().maxRows},hidden:function(){return!this.getSettings().allowInsertRow}}}Object.defineProperties(n,{KEY:{get:function(){return s}},rowAboveItem:{get:function(){return o}},__esModule:{value:!0}});var r,i=(r=e("utils"),r&&r.__esModule&&r||{default:r}).getValidSelection,s="row_above"},{utils:88}],85:[function(e,t,n){"use strict";function o(){return{key:s,name:"Insert row below",callback:function(e,t){this.alter("insert_row",t.end.row+1,1,"ContextMenu.rowBelow")},disabled:function(){var e=i(this);return!e||this.selection.selectedHeader.cols||this.countRows()>=this.getSettings().maxRows},hidden:function(){return!this.getSettings().allowInsertRow}}}Object.defineProperties(n,{KEY:{get:function(){return s}},rowBelowItem:{get:function(){return o}},__esModule:{value:!0}});var r,i=(r=e("utils"),r&&r.__esModule&&r||{default:r}).getValidSelection,s="row_below"},{utils:88}],86:[function(e,t,n){"use strict";function o(){return{name:r}}Object.defineProperties(n,{KEY:{get:function(){return r}},separatorItem:{get:function(){return o}},__esModule:{value:!0}});var r="---------"},{}],87:[function(e,t,n){"use strict";function o(){return{key:r,name:"Undo",callback:function(){this.undo()},disabled:function(){return this.undoRedo&&!this.undoRedo.isUndoAvailable()}}}Object.defineProperties(n,{KEY:{get:function(){return r}},undoItem:{get:function(){return o}},__esModule:{value:!0}});var r="undo"},{}],88:[function(e,t,n){"use strict";function o(e){return{start:e.getTopLeftCorner(),end:e.getBottomRightCorner()}}function r(e){return S(e,"htSeparator")}function i(e){return S(e,"htSubmenu")}function s(e){return S(e,"htDisabled")}function a(e){return S(e,"htSelectionDisabled")}function l(e){var t=e.getSelected();return t?t[0]<0?null:t:null}function u(e,t){return e.indexOf(t)!=-1?e:(e=e.replace("htTop","").replace("htMiddle","").replace("htBottom","").replace("  ",""),e+=" "+t)}function c(e,t){return e.indexOf(t)!=-1?e:(e=e.replace("htLeft","").replace("htCenter","").replace("htRight","").replace("htJustify","").replace("  ",""),e+=" "+t)}function d(e,t){for(var n={},o=e.from.row;o<=e.to.row;o++)for(var r=e.from.col;r<=e.to.col;r++)n[o]||(n[o]=[]),n[o][r]=t(o,r);return n}function h(e,t,n,o){if(e.from.row==e.to.row&&e.from.col==e.to.col)f(e.from.row,e.from.col,t,n,o);else for(var r=e.from.row;r<=e.to.row;r++)for(var i=e.from.col;i<=e.to.col;i++)f(r,i,t,n,o)}function f(e,t,n,o,r){var i=r(e,t),s=o;i.className&&(s="vertical"===n?u(i.className,o):c(i.className,o)),i.className=s}function p(e,t){var n=!1;return e&&e.forAll(function(e,o){if(t(e,o))return n=!0,!1}),n}function m(e){return'<span class="selected">'+String.fromCharCode(10003)+"</span>"+e}function g(e,t){return!e.hidden||!("function"==typeof e.hidden&&e.hidden.call(t))}function w(e,t){for(var n=e.slice(0),o=0;o<n.length&&n[o].name===t;)n.shift();return n}function v(e,t){var n=e.slice(0);return n.reverse(),n=w(n,t),n.reverse(),n}function y(e){var t=[];return M(e,function(e,n){n>0?t[t.length-1].name!==e.name&&t.push(e):t.push(e)}),t}function b(e){var t=void 0!==arguments[1]?arguments[1]:E,n=e.slice(0);return n=w(n,t),n=v(n,t),n=y(n)}Object.defineProperties(n,{normalizeSelection:{get:function(){return o}},isSeparator:{get:function(){return r}},hasSubMenu:{get:function(){return i}},isDisabled:{get:function(){return s}},isSelectionDisabled:{get:function(){return a}},getValidSelection:{get:function(){return l}},prepareVerticalAlignClass:{get:function(){return u}},prepareHorizontalAlignClass:{get:function(){return c}},getAlignmentClasses:{get:function(){return d}},align:{get:function(){return h}},checkSelectionConsistency:{get:function(){return p}},markLabelAsSelected:{get:function(){return m}},isItemHidden:{get:function(){return g}},filterSeparators:{get:function(){return b}},__esModule:{value:!0}});var C,_,R,M=(C=e("helpers/array"),C&&C.__esModule&&C||{default:C}).arrayEach,S=(_=e("helpers/dom/element"),_&&_.__esModule&&_||{default:_}).hasClass,E=(R=e("predefinedItems/separator"),R&&R.__esModule&&R||{default:R}).KEY},{"helpers/array":43,"helpers/dom/element":47,"predefinedItems/separator":86}],89:[function(e,t,n){"use strict";Object.defineProperties(n,{ContextMenuCopyPaste:{get:function(){return w}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c=(o=e("_base"),o&&o.__esModule&&o||{default:o}).default,d=(r=e("zeroclipboard"),r&&r.__esModule&&r||{default:r}).default,h=(i=e("helpers/dom/element"),i&&i.__esModule&&i||{default:i}).removeClass,f=(s=e("helpers/array"),s&&s.__esModule&&s||{default:s}).arrayEach,p=(a=e("eventManager"),a&&a.__esModule&&a||{default:a}).EventManager,m=(l=e("plugins"),l&&l.__esModule&&l||{default:l}).registerPlugin,g=(u=e("contextMenu/predefinedItems"),u&&u.__esModule&&u||{default:u}).SEPARATOR,w=function(e){$traceurRuntime.superConstructor(v).call(this,e),this.eventManager=new p(this),this.swfPath=null,this.outsideClickDeselectsCache=null},v=w;$traceurRuntime.createClass(w,{isEnabled:function(){return this.hot.getSettings().contextMenuCopyPaste},enablePlugin:function(){var e=this;if(!this.enabled){"object"==typeof this.hot.getSettings().contextMenuCopyPaste&&(this.swfPath=this.hot.getSettings().contextMenuCopyPaste.swfPath),"undefined"==typeof d&&console.error("To be able to use the Copy/Paste feature from the context menu, you need to manually include ZeroClipboard.js file to your website.");try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(e){"undefined"==typeof navigator.mimeTypes["application/x-shockwave-flash"]&&console.error("To be able to use the Copy/Paste feature from the context menu, your browser needs to have Flash Plugin installed.")}this.swfPath&&d.config({swfPath:this.swfPath}),this.hot.addHook("afterContextMenuShow",function(){return e.onAfterContextMenuShow()}),this.hot.addHook("afterContextMenuDefaultOptions",function(t){return e.onAfterContextMenuDefaultOptions(t)}),this.registerEvents(),$traceurRuntime.superGet(this,v.prototype,"enablePlugin").call(this)}},disablePlugin:function(){$traceurRuntime.superGet(this,v.prototype,"disablePlugin").call(this)},registerEvents:function(){var e=this;this.eventManager.addEventListener(document,"mouseenter",function(){return e.removeCurrentClass()}),this.eventManager.addEventListener(document,"mouseleave",function(){return e.removeZeroClipboardClass()})},getCopyValue:function(){return this.hot.copyPaste.setCopyableText(),this.hot.copyPaste.copyPasteInstance.elTextarea.value},onAfterContextMenuDefaultOptions:function(e){e.items.unshift({key:"copy",name:"Copy",disabled:function(){return this.selection.selectedHeader.corner}},{key:"paste",name:"Paste",callback:function(){this.copyPaste.triggerPaste()},disabled:function(){return this.selection.selectedHeader.corner}},{name:g})},onAfterContextMenuShow:function(){var e=this,t=this.hot.getPlugin("contextMenu"),n=t.menu.hotMenu.getSourceData();f(n,function(n,o){if("copy"===n.key){var r=new d(t.menu.hotMenu.getCell(o,0));return r.off(),r.on("copy",function(t){var n=t.clipboardData;n.setData("text/plain",e.getCopyValue()),e.hot.getSettings().outsideClickDeselects=e.outsideClickDeselectsCache}),!1}})},removeCurrentClass:function(){var e=this.hot.getPlugin("contextMenu");if(e.enabled){if(e.menu.isOpened()){var t=e.menu.hotMenu.rootElement.querySelector("td.current");t&&h(t,"current")}this.outsideClickDeselectsCache=this.hot.getSettings().outsideClickDeselects,this.hot.getSettings().outsideClickDeselects=!1}},removeZeroClipboardClass:function(){var e=this.hot.getPlugin("contextMenu");if(e.enabled){if(e.menu.isOpened()){var t=e.menu.hotMenu.rootElement.querySelector("td.zeroclipboard-is-hover");t&&h(t,"zeroclipboard-is-hover")}this.hot.getSettings().outsideClickDeselects=this.outsideClickDeselectsCache}}},{},c),m("contextMenuCopyPaste",w)},{_base:62,"contextMenu/predefinedItems":75,eventManager:42,"helpers/array":43,"helpers/dom/element":47,plugins:61,zeroclipboard:"zeroclipboard"}],90:[function(e,t,n){"use strict";function o(e){function t(){e.isListening()&&e.selection.empty()}function n(t){var n,o,r,i,s,a,l,u,c,d;if(e.isListening()&&e.selection.isSelected()){n=t,o=y.parse(n),r=e.getSelected(),i=new x(r[0],r[1]),s=new x(r[2],r[3]),a=new D(i,i,s),l=a.getTopLeftCorner(),u=a.getBottomRightCorner(),c=l,d=new x(Math.max(u.row,o.length-1+l.row),Math.max(u.col,o[0].length-1+l.col));var h=s.row-i.row>=o.length-1,f=s.col-i.col>=o[0].length-1;e.addHookOnce("afterChange",function(t,n){var o=t?t.length:0;if(o){var r={row:0,col:0},i=-1;R(t,function(e,n){var s=o>n+1?t[n+1]:null;s&&(h||(r.row=r.row+Math.max(s[0]-e[0]-1,0)),!f&&e[1]>i&&(i=e[1],r.col=r.col+Math.max(s[1]-e[1]-1,0)))}),e.selectCell(c.row,c.col,d.row+r.row,d.col+r.col)}}),e.populateFromArray(c.row,c.col,o,d.row,d.col,"CopyPaste.paste",e.getSettings().pasteMode)}}function o(t){if(e.getSelected()&&!(e.getActiveEditor()&&e.getActiveEditor().isOpened()||O(t))){if(_(t.keyCode)){if(e.getSettings().fragmentSelection&&T())return;return r.setCopyableText(),void E(t)}var n=(t.ctrlKey||t.metaKey)&&!t.altKey;t.keyCode==C.A&&n&&e._registerTimeout(setTimeout(k(r.setCopyableText,r),0))}}var r=this;this.copyPasteInstance=v(),this.copyPasteInstance.onCut(t),this.copyPasteInstance.onPaste(n),this.onPaste=n,e.addHook("beforeKeyDown",o),this.destroy=function(){this.copyPasteInstance&&(this.copyPasteInstance.removeCallback(t),this.copyPasteInstance.removeCallback(n),this.copyPasteInstance.destroy(),this.copyPasteInstance=null),e.removeHook("beforeKeyDown",o)},e.addHook("afterDestroy",k(this.destroy,this)),this.triggerPaste=k(this.copyPasteInstance.triggerPaste,this.copyPasteInstance),this.triggerCut=k(this.copyPasteInstance.triggerCut,this.copyPasteInstance),this.setCopyableText=function(){var t=e.getSettings(),n=t.copyRowsLimit,o=t.copyColsLimit,r=e.getSelectedRange(),i=r.getTopLeftCorner(),s=r.getBottomRightCorner(),a=i.row,l=i.col,u=s.row,c=s.col,d=Math.min(u,a+n-1),h=Math.min(c,l+o-1),f=[];f.push({startRow:a,startCol:l,endRow:d,endCol:h}),f=w.hooks.run(e,"modifyCopyableRange",f);var p=this.getRangedCopyableData(f);e.copyPaste.copyPasteInstance.copyable(p),u===d&&c===h||w.hooks.run(e,"afterCopyLimit",u-a+1,c-l+1,n,o)},this.getRangedCopyableData=function(t){var n=[],o=[],r=[];return R(t,function(e){M(e.startRow,e.endRow,function(e){o.indexOf(e)===-1&&o.push(e)}),M(e.startCol,e.endCol,function(e){r.indexOf(e)===-1&&r.push(e)})}),R(o,function(t){var o=[];R(r,function(n){o.push(e.getCopyableData(t,n))}),n.push(o)}),y.stringify(n)}}function r(){var e=this,t=e.getSettings().copyPaste!==!1;t&&!e.copyPaste?e.copyPaste=new o(e):!t&&e.copyPaste&&(e.copyPaste.destroy(),e.copyPaste=null)}Object.defineProperties(n,{CopyPastePlugin:{get:function(){return o}},__esModule:{value:!0}});var i,s,a,l,u,c,d,h,f,p,m,g,w=(i=e("browser"),i&&i.__esModule&&i||{default:i}).default,v=(s=e("copyPaste"),s&&s.__esModule&&s||{default:s}).default,y=(a=e("SheetClip"),a&&a.__esModule&&a||{default:a}).default,b=(l=e("helpers/unicode"),l&&l.__esModule&&l||{default:l}),C=b.KEY_CODES,_=b.isCtrlKey,R=(u=e("helpers/array"),u&&u.__esModule&&u||{default:u}).arrayEach,M=(c=e("helpers/number"),c&&c.__esModule&&c||{default:c}).rangeEach,S=(d=e("helpers/dom/event"),d&&d.__esModule&&d||{default:d}),E=S.stopImmediatePropagation,O=S.isImmediatePropagationStopped,T=(h=e("helpers/dom/element"),h&&h.__esModule&&h||{default:h}).getSelectionText,k=(f=e("helpers/function"),f&&f.__esModule&&f||{default:f}).proxy,x=((p=e("plugins"),p&&p.__esModule&&p||{default:p}).registerPlugin,(m=e("3rdparty/walkontable/src/cell/coords"),m&&m.__esModule&&m||{default:m}).WalkontableCellCoords),D=(g=e("3rdparty/walkontable/src/cell/range"),g&&g.__esModule&&g||{default:g}).WalkontableCellRange;w.hooks.add("afterInit",r),w.hooks.add("afterUpdateSettings",r),w.hooks.register("afterCopyLimit"),w.hooks.register("modifyCopyableRange")},{"3rdparty/walkontable/src/cell/coords":6,"3rdparty/walkontable/src/cell/range":7,SheetClip:"SheetClip",browser:24,copyPaste:"copyPaste","helpers/array":43,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/function":50,"helpers/number":52,"helpers/unicode":56,plugins:61}],91:[function(e,t,n){"use strict";function o(){}var r,i,s,a,l,u=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,c=((i=e("plugins"),i&&i.__esModule&&i||{default:i}).registerPlugin,(s=e("3rdparty/walkontable/src/cell/range"),s&&s.__esModule&&s||{default:s}).WalkontableCellRange),d=(a=e("3rdparty/walkontable/src/selection"),a&&a.__esModule&&a||{default:a}).WalkontableSelection,h=function(e){return"boolean"==typeof e&&e===!0||"object"==typeof e&&e.length>0},f=function(){h(this.getSettings().customBorders)&&(this.customBorders||(l=this,this.customBorders=new o))},p=function(e){for(var t=0;t<l.view.wt.selections.length;t++)if(l.view.wt.selections[t].settings.className==e)return t;return-1},m=function(e){var t={row:e.row,col:e.col},n=new d(e,new c(t,t,t)),o=p(e.className);o>=0?l.view.wt.selections[o]=n:l.view.wt.selections.push(n)},g=function(e,t,n){var o=_(e,t);o=R(o,n),this.setCellMeta(e,t,"borders",o),m(o)},w=function(e){for(var t=e.range,n=t.from.row;n<=t.to.row;n++)for(var o=t.from.col;o<=t.to.col;o++){var r=_(n,o),i=0;n==t.from.row&&(i++,e.hasOwnProperty("top")&&(r.top=e.top)),n==t.to.row&&(i++,e.hasOwnProperty("bottom")&&(r.bottom=e.bottom)),o==t.from.col&&(i++,e.hasOwnProperty("left")&&(r.left=e.left)),o==t.to.col&&(i++,e.hasOwnProperty("right")&&(r.right=e.right)),i>0&&(this.setCellMeta(n,o,"borders",r),m(r))}},v=function(e,t){return"border_row"+e+"col"+t},y=function(){return{width:1,color:"#000"}},b=function(){return{hide:!0}},C=function(){return{width:1,color:"#000",cornerVisible:!1}},_=function(e,t){return{className:v(e,t),border:C(),row:e,col:t,top:b(),right:b(),bottom:b(),left:b()}},R=function(e,t){return t.hasOwnProperty("border")&&(e.border=t.border),t.hasOwnProperty("top")&&(e.top=t.top),t.hasOwnProperty("right")&&(e.right=t.right),t.hasOwnProperty("bottom")&&(e.bottom=t.bottom),t.hasOwnProperty("left")&&(e.left=t.left),e},M=function(e){for(var t=document.querySelectorAll("."+e),n=0;n<t.length;n++)if(t[n]&&"TD"!=t[n].nodeName){var o=t[n].parentNode;o.parentNode&&o.parentNode.removeChild(o)}},S=function(e,t){var n=v(e,t);M(n),this.removeCellMeta(e,t,"borders")},E=function(e,t,n,o){var r=this.getCellMeta(e,t).borders;r&&void 0!=r.border||(r=_(e,t)),o?r[n]=b():r[n]=y(),this.setCellMeta(e,t,"borders",r);var i=v(e,t);M(i),m(r),this.render()},O=function(e,t,n){if(e.from.row==e.to.row&&e.from.col==e.to.col)"noBorders"==t?S.call(this,e.from.row,e.from.col):E.call(this,e.from.row,e.from.col,t,n);else switch(t){case"noBorders":for(var o=e.from.col;o<=e.to.col;o++)for(var r=e.from.row;r<=e.to.row;r++)S.call(this,r,o);break;case"top":for(var i=e.from.col;i<=e.to.col;i++)E.call(this,e.from.row,i,t,n);break;case"right":for(var s=e.from.row;s<=e.to.row;s++)E.call(this,s,e.to.col,t);break;case"bottom":for(var a=e.from.col;a<=e.to.col;a++)E.call(this,e.to.row,a,t);break;case"left":for(var l=e.from.row;l<=e.to.row;l++)E.call(this,l,e.from.col,t)}},T=function(e,t){var n=!1;return e.getSelectedRange().forAll(function(o,r){var i=e.getCellMeta(o,r).borders;if(i){if(!t)return n=!0,!1;if(!i[t].hasOwnProperty("hide"))return n=!0,!1}}),n},k=function(e){return'<span class="selected">'+String.fromCharCode(10003)+"</span>"+e},x=function(e){this.getSettings().customBorders&&(e.items.push(u.plugins.ContextMenu.SEPARATOR),e.items.push({key:"borders",name:"Borders",disabled:function(){return this.selection.selectedHeader.corner},submenu:{items:[{key:"borders:top",name:function(){var e="Top",t=T(this,"top");return t&&(e=k(e)),e},callback:function(){var e=T(this,"top");O.call(this,this.getSelectedRange(),"top",e)}},{key:"borders:right",name:function(){var e="Right",t=T(this,"right");return t&&(e=k(e)),e},callback:function(){var e=T(this,"right");O.call(this,this.getSelectedRange(),"right",e)}},{key:"borders:bottom",name:function(){var e="Bottom",t=T(this,"bottom");return t&&(e=k(e)),e},callback:function(){var e=T(this,"bottom");O.call(this,this.getSelectedRange(),"bottom",e)}},{key:"borders:left",name:function(){var e="Left",t=T(this,"left");return t&&(e=k(e)),e},callback:function(){var e=T(this,"left");O.call(this,this.getSelectedRange(),"left",e)}},{key:"borders:no_borders",name:"Remove border(s)",callback:function(){O.call(this,this.getSelectedRange(),"noBorders")},disabled:function(){return!T(this)}}]}}))};u.hooks.add("beforeInit",f),u.hooks.add("afterContextMenuDefaultOptions",x),u.hooks.add("afterInit",function(){var e=this.getSettings().customBorders;if(e){for(var t=0;t<e.length;t++)e[t].range?w.call(this,e[t]):g.call(this,e[t].row,e[t].col,e[t]);this.render(),this.view.wt.draw(!0)}}),u.CustomBorders=o},{"3rdparty/walkontable/src/cell/range":7,"3rdparty/walkontable/src/selection":19,browser:24,plugins:61}],92:[function(e,t,n){"use strict";function o(){this.boundaries=null,this.callback=null}Object.defineProperties(n,{DragToScroll:{get:function(){return o}},__esModule:{value:!0}});var r,i,s,a=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,l=(i=e("eventManager"),i&&i.__esModule&&i||{default:i}).eventManager;(s=e("plugins"),s&&s.__esModule&&s||{default:s}).registerPlugin;a.plugins.DragToScroll=o,o.prototype.setBoundaries=function(e){this.boundaries=e},o.prototype.setCallback=function(e){this.callback=e},o.prototype.check=function(e,t){var n=0,o=0;t<this.boundaries.top?o=t-this.boundaries.top:t>this.boundaries.bottom&&(o=t-this.boundaries.bottom),e<this.boundaries.left?n=e-this.boundaries.left:e>this.boundaries.right&&(n=e-this.boundaries.right),this.callback(n,o)};var u,c=function(e){e.dragToScrollListening=!1;var t=e.view.wt.wtTable.holder;u=new o,t!==window&&(u.setBoundaries(t.getBoundingClientRect()),u.setCallback(function(e,n){e<0?t.scrollLeft-=50:e>0&&(t.scrollLeft+=50),n<0?t.scrollTop-=20:n>0&&(t.scrollTop+=20)}),e.dragToScrollListening=!0)};a.hooks.add("afterInit",function(){var e=this,t=l(this);t.addEventListener(document,"mouseup",function(){e.dragToScrollListening=!1}),t.addEventListener(document,"mousemove",function(t){e.dragToScrollListening&&u.check(t.clientX,t.clientY)})}),a.hooks.add("afterDestroy",function(){l(this).clear()}),a.hooks.add("afterOnCellMouseDown",function(){c(this)}),a.hooks.add("afterOnCellCornerMouseDown",function(){c(this)}),a.plugins.DragToScroll=o},{browser:24,eventManager:42,plugins:61}],93:[function(e,t,n){"use strict";function o(e){return{key:"freeze_column",name:"Freeze this column",callback:function(){var t=this.getSelectedRange().from.col;e.freezeColumn(t),this.render(),this.view.wt.wtOverlays.adjustElementsSize(!0)},hidden:function(){var e=this.getSelectedRange(),t=!1;return void 0===e?t=!0:(e.from.col!==e.to.col||e.from.col<=this.getSettings().fixedColumnsLeft-1)&&(t=!0),t}}}Object.defineProperties(n,{freezeColumnItem:{get:function(){return o}},__esModule:{value:!0}})},{}],94:[function(e,t,n){"use strict";function o(e){return{key:"unfreeze_column",name:"Unfreeze this column",callback:function(){var t=this.getSelectedRange().from.col;e.unfreezeColumn(t),this.render(),this.view.wt.wtOverlays.adjustElementsSize(!0)},hidden:function(){var e=this.getSelectedRange(),t=!1;return void 0===e?t=!0:(e.from.col!==e.to.col||e.from.col>=this.getSettings().fixedColumnsLeft)&&(t=!0),t}}}Object.defineProperties(n,{unfreezeColumnItem:{get:function(){return o}},__esModule:{value:!0}})},{}],95:[function(e,t,n){"use strict";Object.defineProperties(n,{ManualColumnFreeze:{get:function(){return g}},__esModule:{value:!0}});var o,r,i,s,a,l,u=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,c=(r=e("_base"),r&&r.__esModule&&r||{default:r}).default,d=(i=e("plugins"),i&&i.__esModule&&i||{default:i}).registerPlugin,h=(s=e("helpers/array"),s&&s.__esModule&&s||{default:s}).arrayEach,f=(a=e("contextMenuItem/freezeColumn"),a&&a.__esModule&&a||{default:a}).freezeColumnItem,p=(l=e("contextMenuItem/unfreezeColumn"),l&&l.__esModule&&l||{default:l}).unfreezeColumnItem,m=new WeakMap,g=function(e){$traceurRuntime.superConstructor(w).call(this,e),m.set(this,{moveByFreeze:!1,afterFirstUse:!1}),this.frozenColumnsBasePositions=[],this.manualColumnMovePlugin=void 0},w=g;$traceurRuntime.createClass(g,{isEnabled:function(){return!!this.hot.getSettings().manualColumnFreeze},enablePlugin:function(){var e=this;this.enabled||(this.addHook("afterContextMenuDefaultOptions",function(t){return e.addContextMenuEntry(t)}),this.addHook("afterInit",function(){return e.onAfterInit()}),this.addHook("beforeColumnMove",function(t,n){return e.onBeforeColumnMove(t,n)}),$traceurRuntime.superGet(this,w.prototype,"enablePlugin").call(this))},disablePlugin:function(){var e=m.get(this);e.afterFirstUse=!1,e.moveByFreeze=!1,$traceurRuntime.superGet(this,w.prototype,"disablePlugin").call(this)},updatePlugin:function(){this.disablePlugin(),this.enablePlugin(),$traceurRuntime.superGet(this,w.prototype,"updatePlugin").call(this)},freezeColumn:function(e){var t=m.get(this),n=this.hot.getSettings();t.afterFirstUse||(t.afterFirstUse=!0),n.fixedColumnsLeft===this.hot.countCols()||e<=n.fixedColumnsLeft-1||(t.moveByFreeze=!0,e!==this.getMovePlugin().columnsMapper.getValueByIndex(e)&&(this.frozenColumnsBasePositions[n.fixedColumnsLeft]=e),this.getMovePlugin().moveColumn(e,n.fixedColumnsLeft++))},unfreezeColumn:function(e){var t=m.get(this),n=this.hot.getSettings();if(t.afterFirstUse||(t.afterFirstUse=!0),!(n.fixedColumnsLeft<=0||e>n.fixedColumnsLeft-1)){var o=this.getBestColumnReturnPosition(e);t.moveByFreeze=!0,n.fixedColumnsLeft--,this.getMovePlugin().moveColumn(e,o+1)}},getMovePlugin:function(){return this.manualColumnMovePlugin||(this.manualColumnMovePlugin=this.hot.getPlugin("manualColumnMove")),this.manualColumnMovePlugin},getBestColumnReturnPosition:function(e){var t,n=this.getMovePlugin(),o=this.hot.getSettings(),r=o.fixedColumnsLeft,i=n.columnsMapper.getValueByIndex(r);if(null==this.frozenColumnsBasePositions[e])for(t=n.columnsMapper.getValueByIndex(e);i<t;)r++,i=n.columnsMapper.getValueByIndex(r);else{for(t=this.frozenColumnsBasePositions[e],this.frozenColumnsBasePositions[e]=void 0;i<=t;)r++,i=n.columnsMapper.getValueByIndex(r);r=i}return r-1},addContextMenuEntry:function(e){e.items.push(u.plugins.ContextMenu.SEPARATOR,f(this),p(this))},onAfterInit:function(){this.getMovePlugin().isEnabled()||this.getMovePlugin().enablePlugin()},onBeforeColumnMove:function(e,t){var n=m.get(this);if(n.afterFirstUse&&!n.moveByFreeze){var o=this.hot.getSettings().fixedColumnsLeft,r=t<o;if(r||h(e,function(e,t,n){if(e<o)return r=!0,!1}),r)return!1}n.moveByFreeze&&(n.moveByFreeze=!1)},destroy:function(){$traceurRuntime.superGet(this,w.prototype,"destroy").call(this)}},{},c),d("manualColumnFreeze",g)},{_base:62,browser:24,"contextMenuItem/freezeColumn":93,"contextMenuItem/unfreezeColumn":94,"helpers/array":43,plugins:61}],96:[function(e,t,n){"use strict";Object.defineProperties(n,{ColumnsMapper:{get:function(){return f}},__esModule:{value:!0}});var o,r,i,s,a,l=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,u=(r=e("mixins/arrayMapper"),r&&r.__esModule&&r||{default:r}).arrayMapper,c=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}).arrayFilter,d=(s=e("helpers/object"),s&&s.__esModule&&s||{default:s}).mixin,h=(a=e("helpers/number"),a&&a.__esModule&&a||{default:a}).rangeEach,f=function(e){this.manualColumnMove=e};$traceurRuntime.createClass(f,{createMap:function(e){var t=this,n=void 0===e?this._arrayMap.length:e;this._arrayMap.length=0,h(n-1,function(e){t._arrayMap[e]=e})},destroy:function(){this._arrayMap=null},moveColumn:function(e,t){var n=this._arrayMap[e];this._arrayMap[e]=null,this._arrayMap.splice(t,0,n)},clearNull:function(){this._arrayMap=c(this._arrayMap,function(e){return null!==e})}},{}),d(f,u),l.utils.ManualColumnMoveColumnsMapper=f},{browser:24,"helpers/array":43,"helpers/number":52,"helpers/object":53,"mixins/arrayMapper":57}],97:[function(e,t,n){"use strict";Object.defineProperties(n,{ManualColumnMove:{get:function(){return D}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d,h,f=(o=e("_base.js"),o&&o.__esModule&&o||{default:o}).default,p=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,m=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}).arrayEach,g=(s=e("helpers/dom/element"),s&&s.__esModule&&s||{default:s}),w=g.addClass,v=g.removeClass,y=g.offset,b=(a=e("helpers/number"),a&&a.__esModule&&a||{default:a}).rangeEach,C=(l=e("eventManager"),l&&l.__esModule&&l||{default:l}).eventManager,_=(u=e("plugins"),u&&u.__esModule&&u||{default:u}).registerPlugin,R=(c=e("columnsMapper"),c&&c.__esModule&&c||{default:c}).ColumnsMapper,M=(d=e("ui/backlight"),d&&d.__esModule&&d||{default:d}).BacklightUI,S=(h=e("ui/guideline"),h&&h.__esModule&&h||{default:h}).GuidelineUI,E=new WeakMap,O="ht__manualColumnMove",T="show-ui",k="on-moving--columns",x="after-selection--columns",D=function(e){$traceurRuntime.superConstructor(H).call(this,e),E.set(this,{columnsToMove:[],countCols:0,fixedColumns:0,pressed:void 0,disallowMoving:void 0,target:{eventPageX:void 0,coords:void 0,TD:void 0,col:void 0}}),this.removedColumns=[],this.columnsMapper=new R(this),this.eventManager=C(this),this.backlight=new M(e),this.guideline=new S(e)},H=D;$traceurRuntime.createClass(D,{isEnabled:function(){return!!this.hot.getSettings().manualColumnMove},enablePlugin:function(){var e=this;this.enabled||(this.addHook("beforeOnCellMouseDown",function(t,n,o,r){return e.onBeforeOnCellMouseDown(t,n,o,r)}),this.addHook("beforeOnCellMouseOver",function(t,n,o,r){return e.onBeforeOnCellMouseOver(t,n,o,r)}),this.addHook("afterScrollVertically",function(){return e.onAfterScrollVertically()}),this.addHook("modifyCol",function(t,n){return e.onModifyCol(t,n)}),this.addHook("beforeRemoveCol",function(t,n){return e.onBeforeRemoveCol(t,n)}),this.addHook("afterRemoveCol",function(t,n){return e.onAfterRemoveCol(t,n)}),this.addHook("afterCreateCol",function(t,n){return e.onAfterCreateCol(t,n)}),this.addHook("unmodifyCol",function(t){return e.onUnmodifyCol(t)}),this.registerEvents(),w(this.hot.rootElement,O),$traceurRuntime.superGet(this,H.prototype,"enablePlugin").call(this))},updatePlugin:function(){this.disablePlugin(),this.enablePlugin(),this.onAfterPluginsInitialized(),$traceurRuntime.superGet(this,H.prototype,"updatePlugin").call(this)},disablePlugin:function(){var e=this.hot.getSettings().manualColumnMove;Array.isArray(e)&&this.columnsMapper.clearMap(),v(this.hot.rootElement,O),this.unregisterEvents(),this.backlight.destroy(),this.guideline.destroy(),$traceurRuntime.superGet(this,H.prototype,"disablePlugin").call(this)},moveColumn:function(e,t){this.moveColumns([e],t)},moveColumns:function(e,t){var n=this,o=E.get(this),r=this.hot.runHooks("beforeColumnMove",e,t);o.disallowMoving=!r,r!==!1&&(m(e,function(e,t,o){o[t]=n.columnsMapper.getValueByIndex(e)}),m(e,function(e,o){var r=n.columnsMapper.getIndexByValue(e);r!==t&&n.columnsMapper.moveColumn(r,t+o)}),this.columnsMapper.clearNull()),this.hot.runHooks("afterColumnMove",e,t)},changeSelection:function(e,t){var n=this.hot.selection,o=this.hot.countRows()-1;n.setRangeStartOnly(new WalkontableCellCoords(0,e)),n.setRangeEnd(new WalkontableCellCoords(o,t),!1)},getColumnsWidth:function(e,t){for(var n=0,o=e;o<t;o++){var r=0;r=o<0?this.hot.view.wt.wtTable.getColumnWidth(o)||0:this.hot.view.wt.wtTable.getStretchedColumnWidth(o)||0,n+=r}return n},initialSettings:function(){var e=this.hot.getSettings().manualColumnMove;Array.isArray(e)?this.moveColumns(e,0):void 0!==e&&this.persistentStateLoad()},isFixedColumnsLeft:function(e){return e<this.hot.getSettings().fixedColumnsLeft},persistentStateSave:function(){p.hooks.run(this.hot,"persistentStateSave","manualColumnMove",this.columnsMapper._arrayMap)},persistentStateLoad:function(){var e={};p.hooks.run(this.hot,"persistentStateLoad","manualColumnMove",e),e.value&&(this.columnsMapper._arrayMap=e.value)},prepareColumnsToMoving:function(e,t){var n=[];return b(e,t,function(e){n.push(e)}),n},refreshPositions:function(){var e=E.get(this),t=this.hot.view.wt.wtTable.getFirstVisibleColumn(),n=this.hot.view.wt.wtTable.getLastVisibleColumn(),o=this.hot.view.wt.wtTable,r=this.hot.view.wt.wtOverlays.scrollableElement,i="number"==typeof r.scrollX?r.scrollX:r.scrollLeft,s=this.hot.view.THEAD.offsetLeft+this.getColumnsWidth(0,e.coordsColumn),a=e.target.eventPageX-(e.rootElementOffset-(void 0===r.scrollX?i:0)),l=o.hider.offsetWidth,u=o.TBODY.offsetLeft,c=this.backlight.getOffset().left,d=this.backlight.getSize().width,h=0;if(e.rootElementOffset+o.holder.offsetWidth+i<e.target.eventPageX&&e.coordsColumn<e.countCols&&e.coordsColumn++,e.hasRowHeaders&&(h=this.hot.view.wt.wtOverlays.leftOverlay.clone.wtTable.getColumnHeader(-1).offsetWidth),this.isFixedColumnsLeft(e.coordsColumn)&&(s+=i),s+=h,e.coordsColumn<0)e.fixedColumns>0?e.target.col=0:e.target.col=t>0?t-1:t;else if(e.target.TD.offsetWidth/2+s<=a){var f=e.coordsColumn>=e.countCols?e.countCols-1:e.coordsColumn;e.target.col=f+1,s+=e.target.TD.offsetWidth,e.target.col>n&&this.hot.scrollViewportTo(void 0,n+1,void 0,!0)}else e.target.col=e.coordsColumn,e.target.col<=t&&e.target.col>=e.fixedColumns&&this.hot.scrollViewportTo(void 0,t-1);e.target.col<=t&&e.target.col>=e.fixedColumns&&this.hot.scrollViewportTo(void 0,t-1);var p=a,m=s;a+d+c>=l?p=l-d-c:a+c<u+h&&(p=u+h+Math.abs(c)),s>=l-1?m=l-1:0===m?m=1:void 0!==r.scrollX&&e.coordsColumn<e.fixedColumns&&(m-=e.rootElementOffset<=r.scrollX?e.rootElementOffset:0),this.backlight.setPosition(null,p),this.guideline.setPosition(null,m)},registerEvents:function(){var e=this;this.eventManager.addEventListener(document.documentElement,"mousemove",function(t){return e.onMouseMove(t)}),this.eventManager.addEventListener(document.documentElement,"mouseup",function(){return e.onMouseUp()})},unregisterEvents:function(){this.eventManager.clear()},onBeforeOnCellMouseDown:function(e,t,n,o){var r=this.hot.view.wt.wtTable,i=this.hot.selection.selectedHeader.cols,s=this.hot.getSelectedRange(),a=E.get(this),l=e.realTarget.className.indexOf("columnSorting")>-1;if(!s||!i||a.pressed||0!==e.button||l)return a.pressed=!1,a.columnsToMove.length=0,void v(this.hot.rootElement,[k,T]);var u=this.guideline.isBuilt()&&!this.guideline.isAppended(),c=this.backlight.isBuilt()&&!this.backlight.isAppended();u&&c&&(this.guideline.appendTo(r.hider),this.backlight.appendTo(r.hider));var d=s,h=d.from,f=d.to,p=Math.min(h.col,f.col),m=Math.max(h.col,f.col);if(t.row<0&&t.col>=p&&t.col<=m){o.column=!0,a.pressed=!0,a.target.eventPageX=e.pageX,a.coordsColumn=t.col,a.target.TD=n,a.target.col=t.col,a.columnsToMove=this.prepareColumnsToMoving(p,m),a.hasRowHeaders=!!this.hot.getSettings().rowHeaders,a.countCols=this.hot.countCols(),a.fixedColumns=this.hot.getSettings().fixedColumnsLeft,a.rootElementOffset=y(this.hot.rootElement).left;var g=a.hasRowHeaders?-1:0,b=r.holder.scrollTop+r.getColumnHeaderHeight(0)+1,C=t.col<a.fixedColumns,_=this.hot.view.wt.wtOverlays.scrollableElement,R=_.scrollX?_.scrollX-a.rootElementOffset:0,M=e.layerX-(C?R:0),S=Math.abs(this.getColumnsWidth(p,t.col)+M);this.backlight.setPosition(b,this.getColumnsWidth(g,p)+S),this.backlight.setSize(this.getColumnsWidth(p,m+1),r.hider.offsetHeight-b),this.backlight.setOffset(null,S*-1),w(this.hot.rootElement,k)}else v(this.hot.rootElement,x),a.pressed=!1,a.columnsToMove.length=0},onMouseMove:function(e){var t=E.get(this);if(t.pressed){if(e.realTarget===this.backlight.element){var n=this.backlight.getSize().width;this.backlight.setSize(0),setTimeout(function(){this.backlight.setPosition(n)})}t.target.eventPageX=e.pageX,this.refreshPositions()}},onBeforeOnCellMouseOver:function(e,t,n,o){var r=this.hot.getSelectedRange(),i=E.get(this);r&&i.pressed&&(i.columnsToMove.indexOf(t.col)>-1?v(this.hot.rootElement,T):w(this.hot.rootElement,T),o.row=!0,o.column=!0,o.cell=!0,i.coordsColumn=t.col,i.target.TD=n)},onMouseUp:function(){var e=E.get(this);if(e.coordsColumn=void 0,e.pressed=!1,e.backlightWidth=0,v(this.hot.rootElement,[k,T,x]),this.hot.selection.selectedHeader.cols&&w(this.hot.rootElement,x),!(e.columnsToMove.length<1||void 0===e.target.col||e.columnsToMove.indexOf(e.target.col)>-1)){
if(this.moveColumns(e.columnsToMove,e.target.col),this.persistentStateSave(),this.hot.render(),this.hot.view.wt.wtOverlays.adjustElementsSize(!0),!e.disallowMoving){var t=this.columnsMapper.getIndexByValue(e.columnsToMove[0]),n=this.columnsMapper.getIndexByValue(e.columnsToMove[e.columnsToMove.length-1]);this.changeSelection(t,n)}e.columnsToMove.length=0}},onAfterScrollVertically:function(){var e=this.hot.view.wt.wtTable,t=e.getColumnHeaderHeight(0)+1,n=e.holder.scrollTop,o=t+n;this.backlight.setPosition(o),this.backlight.setSize(null,e.hider.offsetHeight-o)},onAfterCreateCol:function(e,t){this.columnsMapper.shiftItems(e,t)},onBeforeRemoveCol:function(e,t){var n=this;this.removedColumns.length=0,e!==!1&&b(e,e+t-1,function(e){n.removedColumns.push(n.hot.runHooks("modifyCol",e,n.pluginName))})},onAfterRemoveCol:function(e,t){this.columnsMapper.unshiftItems(this.removedColumns)},onModifyCol:function(e,t){if(t!==this.pluginName){var n=this.columnsMapper.getValueByIndex(e);e=null===n?e:n}return e},onUnmodifyCol:function(e){var t=this.columnsMapper.getIndexByValue(e);return e=null===t?e:t},onAfterPluginsInitialized:function(){var e=this.hot.countCols(),t=this.columnsMapper._arrayMap.length;if(0===t)this.columnsMapper.createMap(this.hot.countSourceCols()||this.hot.getSettings().startCols);else if(t<e){var n=e-t;this.columnsMapper.insertItems(t,n)}else if(t>e){var o=e-1,r=[];m(this.columnsMapper._arrayMap,function(e,t,n){e>o&&r.push(t)}),this.columnsMapper.removeItems(r)}this.initialSettings(),this.backlight.build(),this.guideline.build()},destroy:function(){this.backlight.destroy(),this.guideline.destroy(),$traceurRuntime.superGet(this,H.prototype,"destroy").call(this)}},{},f),_("ManualColumnMove",D),p.hooks.register("beforeColumnMove"),p.hooks.register("afterColumnMove"),p.hooks.register("unmodifyCol")},{"_base.js":62,browser:24,columnsMapper:96,eventManager:42,"helpers/array":43,"helpers/dom/element":47,"helpers/number":52,plugins:61,"ui/backlight":99,"ui/guideline":100}],98:[function(e,t,n){"use strict";Object.defineProperties(n,{BaseUI:{get:function(){return u}},__esModule:{value:!0}});var o,r=(o=e("helpers/number"),o&&o.__esModule&&o||{default:o}).isNumeric,i=0,s=1,a=2,l="px",u=function(e){this.hot=e,this._element=null,this.state=i};$traceurRuntime.createClass(u,{appendTo:function(e){e.appendChild(this._element),this.state=a},build:function(){this._element=document.createElement("div"),this.state=s},destroy:function(){this.isAppended()&&this._element.parentElement.removeChild(this._element),this._element=null,this.state=i},isAppended:function(){return this.state===a},isBuilt:function(){return this.state>=s},setPosition:function(e,t){r(e)&&(this._element.style.top=e+l),r(t)&&(this._element.style.left=t+l)},getPosition:function(){return{top:this._element.style.top?parseInt(this._element.style.top,10):0,left:this._element.style.left?parseInt(this._element.style.left,10):0}},setSize:function(e,t){r(e)&&(this._element.style.width=e+l),r(t)&&(this._element.style.height=t+l)},getSize:function(){return{width:this._element.style.width?parseInt(this._element.style.width,10):0,height:this._element.style.height?parseInt(this._element.style.height,10):0}},setOffset:function(e,t){r(e)&&(this._element.style.marginTop=e+l),r(t)&&(this._element.style.marginLeft=t+l)},getOffset:function(){return{top:this._element.style.marginTop?parseInt(this._element.style.marginTop,10):0,left:this._element.style.marginLeft?parseInt(this._element.style.marginLeft,10):0}}},{})},{"helpers/number":52}],99:[function(e,t,n){"use strict";Object.defineProperties(n,{BacklightUI:{get:function(){return l}},__esModule:{value:!0}});var o,r,i=(o=e("_base"),o&&o.__esModule&&o||{default:o}).BaseUI,s=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}).addClass,a="ht__manualColumnMove--backlight",l=function(e){$traceurRuntime.superConstructor(u).call(this,e)},u=l;$traceurRuntime.createClass(l,{build:function(){$traceurRuntime.superGet(this,u.prototype,"build").call(this),s(this._element,a)}},{},i)},{_base:98,"helpers/dom/element":47}],100:[function(e,t,n){"use strict";Object.defineProperties(n,{GuidelineUI:{get:function(){return l}},__esModule:{value:!0}});var o,r,i=(o=e("_base"),o&&o.__esModule&&o||{default:o}).BaseUI,s=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}).addClass,a="ht__manualColumnMove--guideline",l=function(e){$traceurRuntime.superConstructor(u).call(this,e)},u=l;$traceurRuntime.createClass(l,{build:function(){$traceurRuntime.superGet(this,u.prototype,"build").call(this),s(this._element,a)}},{},i)},{_base:98,"helpers/dom/element":47}],101:[function(e,t,n){"use strict";Object.defineProperties(n,{ManualColumnResize:{get:function(){return M}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,h=(r=e("_base.js"),r&&r.__esModule&&r||{default:r}).default,f=(i=e("helpers/dom/element"),i&&i.__esModule&&i||{default:i}),p=f.addClass,m=f.hasClass,g=f.removeClass,w=f.outerHeight,v=(s=e("eventManager"),s&&s.__esModule&&s||{default:s}).eventManager,y=(a=e("helpers/dom/event"),a&&a.__esModule&&a||{default:a}),b=y.pageX,C=(y.pageY,(l=e("helpers/array"),l&&l.__esModule&&l||{default:l}).arrayEach),_=(u=e("helpers/number"),u&&u.__esModule&&u||{default:u}).rangeEach,R=(c=e("plugins"),c&&c.__esModule&&c||{default:c}).registerPlugin,M=function(e){$traceurRuntime.superConstructor(S).call(this,e),this.currentTH=null,this.currentCol=null,this.selectedCols=[],this.currentWidth=null,this.newSize=null,this.startY=null,this.startWidth=null,this.startOffset=null,this.handle=document.createElement("DIV"),this.guide=document.createElement("DIV"),this.eventManager=v(this),this.pressed=null,this.dblclick=0,this.autoresizeTimeout=null,this.manualColumnWidths=[],p(this.handle,"manualColumnResizer"),p(this.guide,"manualColumnResizerGuide")},S=M;$traceurRuntime.createClass(M,{isEnabled:function(){return this.hot.getSettings().manualColumnResize},enablePlugin:function(){var e=this;if(!this.enabled){this.manualColumnWidths=[];var t=this.hot.getSettings().manualColumnResize,n=this.loadManualColumnWidths();this.addHook("modifyColWidth",function(t,n){return e.onModifyColWidth(t,n)}),this.addHook("beforeStretchingColumnWidth",function(t,n){return e.onBeforeStretchingColumnWidth(t,n)}),this.addHook("beforeColumnResize",function(t,n,o){return e.onBeforeColumnResize(t,n,o)}),"undefined"!=typeof n?this.manualColumnWidths=n:Array.isArray(t)?this.manualColumnWidths=t:this.manualColumnWidths=[],d.hooks.register("beforeColumnResize"),d.hooks.register("afterColumnResize"),this.bindEvents(),$traceurRuntime.superGet(this,S.prototype,"enablePlugin").call(this)}},updatePlugin:function(){var e=this.hot.getSettings().manualColumnResize;Array.isArray(e)?this.manualColumnWidths=e:e||(this.manualColumnWidths=[])},disablePlugin:function(){$traceurRuntime.superGet(this,S.prototype,"disablePlugin").call(this)},saveManualColumnWidths:function(){this.hot.runHooks("persistentStateSave","manualColumnWidths",this.manualColumnWidths)},loadManualColumnWidths:function(){var e={};return this.hot.runHooks("persistentStateLoad","manualColumnWidths",e),e.value},setupHandlePosition:function(e){var t=this;if(!e.parentNode)return!1;this.currentTH=e;var n=this.hot.view.wt.wtTable.getCoords(e).col,o=w(this.currentTH);if(n>=0){var r=this.currentTH.getBoundingClientRect();if(this.currentCol=n,this.selectedCols=[],this.hot.selection.isSelected()&&this.hot.selection.selectedHeader.cols){var i=this.hot.getSelectedRange(),s=i.from,a=i.to,l=s.col,u=a.col;l>=u&&(l=a.col,u=s.col),this.currentCol>=l&&this.currentCol<=u?_(l,u,function(e){return t.selectedCols.push(e)}):this.selectedCols.push(this.currentCol)}else this.selectedCols.push(this.currentCol);this.startOffset=r.left-6,this.startWidth=parseInt(r.width,10),this.handle.style.top=r.top+"px",this.handle.style.left=this.startOffset+this.startWidth+"px",this.handle.style.height=o+"px",this.hot.rootElement.appendChild(this.handle)}},refreshHandlePosition:function(){this.handle.style.left=this.startOffset+this.currentWidth+"px"},setupGuidePosition:function(){var e=parseInt(w(this.handle),10),t=parseInt(this.handle.style.top,10)+e,n=parseInt(this.hot.view.maximumVisibleElementHeight(0),10);p(this.handle,"active"),p(this.guide,"active"),this.guide.style.top=t+"px",this.guide.style.left=this.handle.style.left,this.guide.style.height=n-e+"px",this.hot.rootElement.appendChild(this.guide)},refreshGuidePosition:function(){this.guide.style.left=this.handle.style.left},hideHandleAndGuide:function(){g(this.handle,"active"),g(this.guide,"active")},checkIfColumnHeader:function(e){if(e!=this.hot.rootElement){var t=e.parentNode;return"THEAD"===t.tagName||this.checkIfColumnHeader(t)}return!1},getTHFromTargetElement:function(e){return"TABLE"!=e.tagName?"TH"==e.tagName?e:this.getTHFromTargetElement(e.parentNode):null},onMouseOver:function(e){if(this.checkIfColumnHeader(e.target)){var t=this.getTHFromTargetElement(e.target);if(!t)return;var n=t.getAttribute("colspan");!t||null!==n&&1!==n||this.pressed||this.setupHandlePosition(t)}},afterMouseDownTimeout:function(){var e=this,t=function(){e.hot.forceFullRender=!0,e.hot.view.render(),e.hot.view.wt.wtOverlays.adjustElementsSize(!0)},n=function(n,o){var r=e.hot.runHooks("beforeColumnResize",n,e.newSize,!0);void 0!==r&&(e.newSize=r),"all"===e.hot.getSettings().stretchH?e.clearManualSize(n):e.setManualSize(n,e.newSize),o&&t(),e.saveManualColumnWidths(),e.hot.runHooks("afterColumnResize",n,e.newSize,!0)};if(this.dblclick>=2){var o=this.selectedCols.length;o>1?(C(this.selectedCols,function(e){n(e)}),t()):C(this.selectedCols,function(e){n(e,!0)})}this.dblclick=0,this.autoresizeTimeout=null},onMouseDown:function(e){var t=this;m(e.target,"manualColumnResizer")&&(this.setupGuidePosition(),this.pressed=this.hot,null===this.autoresizeTimeout&&(this.autoresizeTimeout=setTimeout(function(){return t.afterMouseDownTimeout()},500),this.hot._registerTimeout(this.autoresizeTimeout)),this.dblclick++,this.startX=b(e),this.newSize=this.startWidth)},onMouseMove:function(e){var t=this;this.pressed&&(this.currentWidth=this.startWidth+(b(e)-this.startX),C(this.selectedCols,function(e){t.newSize=t.setManualSize(e,t.currentWidth)}),this.refreshHandlePosition(),this.refreshGuidePosition())},onMouseUp:function(e){var t=this,n=function(){t.hot.forceFullRender=!0,t.hot.view.render(),t.hot.view.wt.wtOverlays.adjustElementsSize(!0)},o=function(e,o){t.hot.runHooks("beforeColumnResize",e,t.newSize),o&&n(),t.saveManualColumnWidths(),t.hot.runHooks("afterColumnResize",e,t.newSize)};if(this.pressed){if(this.hideHandleAndGuide(),this.pressed=!1,this.newSize!=this.startWidth){var r=this.selectedCols.length;r>1?(C(this.selectedCols,function(e){o(e)}),n()):C(this.selectedCols,function(e){o(e,!0)})}this.setupHandlePosition(this.currentTH)}},bindEvents:function(){var e=this;this.eventManager.addEventListener(this.hot.rootElement,"mouseover",function(t){return e.onMouseOver(t)}),this.eventManager.addEventListener(this.hot.rootElement,"mousedown",function(t){return e.onMouseDown(t)}),this.eventManager.addEventListener(window,"mousemove",function(t){return e.onMouseMove(t)}),this.eventManager.addEventListener(window,"mouseup",function(t){return e.onMouseUp(t)})},setManualSize:function(e,t){return t=Math.max(t,20),e=this.hot.runHooks("modifyCol",e),this.manualColumnWidths[e]=t,t},clearManualSize:function(e){e=this.hot.runHooks("modifyCol",e),this.manualColumnWidths[e]=void 0},onModifyColWidth:function(e,t){return this.enabled&&(t=this.hot.runHooks("modifyCol",t),this.hot.getSettings().manualColumnResize&&this.manualColumnWidths[t])?this.manualColumnWidths[t]:e},onBeforeStretchingColumnWidth:function(e,t){var n=this.manualColumnWidths[t];return void 0===n&&(n=e),n},onBeforeColumnResize:function(){this.hot.view.wt.wtViewport.hasOversizedColumnHeadersMarked={}}},{},h),R("manualColumnResize",M)},{"_base.js":62,browser:24,eventManager:42,"helpers/array":43,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/number":52,plugins:61}],102:[function(e,t,n){"use strict";Object.defineProperties(n,{ManualRowMove:{get:function(){return D}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d,h,f=(o=e("_base.js"),o&&o.__esModule&&o||{default:o}).default,p=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,m=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}).arrayEach,g=(s=e("helpers/dom/element"),s&&s.__esModule&&s||{default:s}),w=g.addClass,v=g.removeClass,y=g.offset,b=(a=e("helpers/number"),a&&a.__esModule&&a||{default:a}).rangeEach,C=(l=e("eventManager"),l&&l.__esModule&&l||{default:l}).eventManager,_=(u=e("plugins"),u&&u.__esModule&&u||{default:u}).registerPlugin,R=(c=e("rowsMapper"),c&&c.__esModule&&c||{default:c}).RowsMapper,M=(d=e("ui/backlight"),d&&d.__esModule&&d||{default:d}).BacklightUI,S=(h=e("ui/guideline"),h&&h.__esModule&&h||{default:h}).GuidelineUI,E=new WeakMap,O="ht__manualRowMove",T="show-ui",k="on-moving--rows",x="after-selection--rows",D=function(e){$traceurRuntime.superConstructor(H).call(this,e),E.set(this,{rowsToMove:[],pressed:void 0,disallowMoving:void 0,target:{eventPageY:void 0,coords:void 0,TD:void 0,row:void 0}}),this.removedRows=[],this.rowsMapper=new R(this),this.eventManager=C(this),this.backlight=new M(e),this.guideline=new S(e)},H=D;$traceurRuntime.createClass(D,{isEnabled:function(){return!!this.hot.getSettings().manualRowMove},enablePlugin:function(){var e=this;this.enabled||(this.addHook("beforeOnCellMouseDown",function(t,n,o,r){return e.onBeforeOnCellMouseDown(t,n,o,r)}),this.addHook("beforeOnCellMouseOver",function(t,n,o,r){return e.onBeforeOnCellMouseOver(t,n,o,r)}),this.addHook("afterScrollHorizontally",function(){return e.onAfterScrollHorizontally()}),this.addHook("modifyRow",function(t,n){return e.onModifyRow(t,n)}),this.addHook("beforeRemoveRow",function(t,n){return e.onBeforeRemoveRow(t,n)}),this.addHook("afterRemoveRow",function(t,n){return e.onAfterRemoveRow(t,n)}),this.addHook("afterCreateRow",function(t,n){return e.onAfterCreateRow(t,n)}),this.addHook("afterLoadData",function(t){return e.onAfterLoadData(t)}),this.addHook("beforeColumnSort",function(t,n){return e.onBeforeColumnSort(t,n)}),this.addHook("unmodifyRow",function(t){return e.onUnmodifyRow(t)}),this.registerEvents(),w(this.hot.rootElement,O),$traceurRuntime.superGet(this,H.prototype,"enablePlugin").call(this))},updatePlugin:function(){this.disablePlugin(),this.enablePlugin(),this.onAfterPluginsInitialized(),$traceurRuntime.superGet(this,H.prototype,"updatePlugin").call(this)},disablePlugin:function(){var e=this.hot.getSettings().manualRowMove;Array.isArray(e)&&this.rowsMapper.clearMap(),v(this.hot.rootElement,O),this.unregisterEvents(),this.backlight.destroy(),this.guideline.destroy(),$traceurRuntime.superGet(this,H.prototype,"disablePlugin").call(this)},moveRow:function(e,t){this.moveRows([e],t)},moveRows:function(e,t){var n=this,o=E.get(this),r=this.hot.runHooks("beforeRowMove",e,t);o.disallowMoving=r===!1,o.disallowMoving||(m(e,function(e,t,o){o[t]=n.rowsMapper.getValueByIndex(e)}),m(e,function(e,o){var r=n.rowsMapper.getIndexByValue(e);r!==t&&n.rowsMapper.moveRow(r,t+o)}),this.rowsMapper.clearNull()),this.hot.runHooks("afterRowMove",e,t)},changeSelection:function(e,t){var n=this.hot.selection,o=this.hot.countCols()-1;n.setRangeStartOnly(new WalkontableCellCoords(e,0)),n.setRangeEnd(new WalkontableCellCoords(t,o),!1)},getRowsHeight:function(e,t){for(var n=0,o=e;o<t;o++){var r=this.hot.view.wt.wtTable.getRowHeight(o)||23;n+=r}return n},initialSettings:function(){var e=this.hot.getSettings().manualRowMove;if(Array.isArray(e))this.moveRows(e,0);else if(void 0!==e){var t=this.persistentStateLoad();t.length&&this.moveRows(t,0)}},isFixedRowTop:function(e){return e<this.hot.getSettings().fixedRowsTop},isFixedRowBottom:function(e){return e>this.hot.getSettings().fixedRowsBottom},persistentStateSave:function(){p.hooks.run(this.hot,"persistentStateSave","manualRowMove",this.rowsMapper._arrayMap)},persistentStateLoad:function(){var e={};return p.hooks.run(this.hot,"persistentStateLoad","manualRowMove",e),e.value?e.value:[]},prepareRowsToMoving:function(){var e=this.hot.getSelectedRange(),t=[];if(!e)return t;var n=e,o=n.from,r=n.to,i=Math.min(o.row,r.row),s=Math.max(o.row,r.row);return b(i,s,function(e){t.push(e)}),t},refreshPositions:function(){var e=E.get(this),t=e.target.coords,n=this.hot.view.wt.wtTable.getFirstVisibleRow(),o=this.hot.view.wt.wtTable.getLastVisibleRow(),r=this.hot.getSettings().fixedRowsTop,i=this.hot.countRows();t.row<r&&n>0&&this.hot.scrollViewportTo(n-1),t.row>=o&&o<i&&this.hot.scrollViewportTo(o+1,void 0,!0);var s=this.hot.view.wt.wtTable,a=e.target.TD,l=y(this.hot.rootElement),u=this.hot.view.THEAD.offsetHeight+this.getRowsHeight(0,t.row),c=e.target.eventPageY-l.top+s.holder.scrollTop,d=s.hider.offsetHeight,h=s.TBODY.offsetTop,f=this.backlight.getOffset().top,p=this.backlight.getSize().height;l.top+s.holder.offsetHeight<e.target.eventPageY&&e.target.coords.row++,this.isFixedRowTop(t.row)&&(u+=s.holder.scrollTop),t.row<0?e.target.row=n>0?n-1:n:a.offsetHeight/2+u<=c?(e.target.row=t.row+1,u+=0===t.row?a.offsetHeight-1:a.offsetHeight):e.target.row=t.row;var m=c,g=u;c+p+f>=d?m=d-p-f:c+f<h&&(m=h+Math.abs(f)),u>=d-1&&(g=d-1);var w=0;this.hot.view.wt.wtOverlays.topOverlay&&(w=this.hot.view.wt.wtOverlays.topOverlay.clone.wtTable.TABLE.offsetHeight),t.row>=r&&g-s.holder.scrollTop<w&&this.hot.scrollViewportTo(t.row),this.backlight.setPosition(m),this.guideline.setPosition(g)},updateRowsMapper:function(){var e=this.hot.countSourceRows(),t=this.rowsMapper._arrayMap.length;if(0===t)this.rowsMapper.createMap(e||this.hot.getSettings().startRows);else if(t<e){var n=e-t;this.rowsMapper.insertItems(t,n)}else if(t>e){var o=e-1,r=[];m(this.rowsMapper._arrayMap,function(e,t,n){e>o&&r.push(t)}),this.rowsMapper.removeItems(r)}},registerEvents:function(){var e=this;this.eventManager.addEventListener(document.documentElement,"mousemove",function(t){return e.onMouseMove(t)}),this.eventManager.addEventListener(document.documentElement,"mouseup",function(){return e.onMouseUp()})},unregisterEvents:function(){this.eventManager.clear()},onBeforeColumnSort:function(e,t){var n=E.get(this);n.disallowMoving=void 0!==t},onBeforeOnCellMouseDown:function(e,t,n,o){var r=this.hot.view.wt.wtTable,i=this.hot.selection.selectedHeader.rows,s=this.hot.getSelectedRange(),a=E.get(this);if(!s||!i||a.pressed||0!==e.button)return a.pressed=!1,a.rowsToMove.length=0,void v(this.hot.rootElement,[k,T]);var l=this.guideline.isBuilt()&&!this.guideline.isAppended(),u=this.backlight.isBuilt()&&!this.backlight.isAppended();l&&u&&(this.guideline.appendTo(r.hider),this.backlight.appendTo(r.hider));var c=s,d=c.from,h=c.to,f=Math.min(d.row,h.row),p=Math.max(d.row,h.row);if(t.col<0&&t.row>=f&&t.row<=p){o.row=!0,a.pressed=!0,a.target.eventPageY=e.pageY,a.target.coords=t,a.target.TD=n,a.rowsToMove=this.prepareRowsToMoving();var m=r.holder.scrollLeft+r.getColumnWidth(-1);this.backlight.setPosition(null,m),this.backlight.setSize(r.hider.offsetWidth-m,this.getRowsHeight(f,p+1)),this.backlight.setOffset((this.getRowsHeight(f,t.row)+e.layerY)*-1,null),w(this.hot.rootElement,k),this.refreshPositions()}else v(this.hot.rootElement,x),a.pressed=!1,a.rowsToMove.length=0},onMouseMove:function(e){var t=E.get(this);if(t.pressed){if(e.realTarget===this.backlight.element){var n=this.backlight.getSize().height;this.backlight.setSize(null,0),setTimeout(function(){this.backlight.setPosition(null,n)})}t.target.eventPageY=e.pageY,this.refreshPositions()}},onBeforeOnCellMouseOver:function(e,t,n,o){var r=this.hot.getSelectedRange(),i=E.get(this);r&&i.pressed&&(i.rowsToMove.indexOf(t.row)>-1?v(this.hot.rootElement,T):w(this.hot.rootElement,T),o.row=!0,o.column=!0,o.cell=!0,i.target.coords=t,i.target.TD=n)},onMouseUp:function(){var e=E.get(this),t=e.target.row,n=e.rowsToMove.length;if(e.pressed=!1,e.backlightHeight=0,v(this.hot.rootElement,[k,T,x]),this.hot.selection.selectedHeader.rows&&w(this.hot.rootElement,x),!(n<1||void 0===t||e.rowsToMove.indexOf(t)>-1||e.rowsToMove[n-1]===t-1)){if(this.moveRows(e.rowsToMove,t),this.persistentStateSave(),this.hot.render(),!e.disallowMoving){var o=this.rowsMapper.getIndexByValue(e.rowsToMove[0]),r=this.rowsMapper.getIndexByValue(e.rowsToMove[n-1]);this.changeSelection(o,r)}e.rowsToMove.length=0}},onAfterScrollHorizontally:function(){var e=this.hot.view.wt.wtTable,t=e.getColumnWidth(-1),n=e.holder.scrollLeft,o=t+n;this.backlight.setPosition(null,o),this.backlight.setSize(e.hider.offsetWidth-o)},onAfterCreateRow:function(e,t){this.rowsMapper.shiftItems(e,t)},onBeforeRemoveRow:function(e,t){var n=this;this.removedRows.length=0,e!==!1&&b(e,e+t-1,function(e){n.removedRows.push(n.hot.runHooks("modifyRow",e,n.pluginName))})},onAfterRemoveRow:function(e,t){this.rowsMapper.unshiftItems(this.removedRows)},onAfterLoadData:function(e){this.updateRowsMapper()},onModifyRow:function(e,t){if(t!==this.pluginName){var n=this.rowsMapper.getValueByIndex(e);e=null===n?e:n}return e},onUnmodifyRow:function(e){var t=this.rowsMapper.getIndexByValue(e);return null===t?e:t},onAfterPluginsInitialized:function(){this.updateRowsMapper(),this.initialSettings(),this.backlight.build(),this.guideline.build()},destroy:function(){this.backlight.destroy(),this.guideline.destroy(),$traceurRuntime.superGet(this,H.prototype,"destroy").call(this)}},{},f),_("ManualRowMove",D),p.hooks.register("beforeRowMove"),p.hooks.register("afterRowMove"),p.hooks.register("unmodifyRow")},{"_base.js":62,browser:24,eventManager:42,"helpers/array":43,"helpers/dom/element":47,"helpers/number":52,plugins:61,rowsMapper:103,"ui/backlight":105,"ui/guideline":106}],103:[function(e,t,n){"use strict";Object.defineProperties(n,{RowsMapper:{get:function(){return f}},__esModule:{value:!0}});var o,r,i,s,a,l=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,u=(r=e("mixins/arrayMapper"),r&&r.__esModule&&r||{default:r}).arrayMapper,c=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}).arrayFilter,d=(s=e("helpers/object"),s&&s.__esModule&&s||{default:s}).mixin,h=(a=e("helpers/number"),a&&a.__esModule&&a||{default:a}).rangeEach,f=function(e){this.manualRowMove=e};$traceurRuntime.createClass(f,{createMap:function(e){var t=this,n=void 0===e?this._arrayMap.length:e;this._arrayMap.length=0,h(n-1,function(e){t._arrayMap[e]=e})},destroy:function(){this._arrayMap=null},moveRow:function(e,t){var n=this._arrayMap[e];this._arrayMap[e]=null,this._arrayMap.splice(t,0,n)},clearNull:function(){this._arrayMap=c(this._arrayMap,function(e){return null!==e})}},{}),d(f,u),l.utils.ManualRowMoveRowsMapper=f},{browser:24,"helpers/array":43,"helpers/number":52,"helpers/object":53,"mixins/arrayMapper":57}],104:[function(e,t,n){"use strict";Object.defineProperties(n,{BaseUI:{get:function(){return a}},__esModule:{value:!0}});var o=0,r=1,i=2,s="px",a=function(e){this.hot=e,this._element=null,this.state=o};$traceurRuntime.createClass(a,{appendTo:function(e){e.appendChild(this._element),this.state=i},build:function(){this._element=document.createElement("div"),this.state=r},destroy:function(){this.isAppended()&&this._element.parentElement.removeChild(this._element),this._element=null,this.state=o},isAppended:function(){return this.state===i},isBuilt:function(){return this.state>=r},setPosition:function(e,t){e&&(this._element.style.top=e+s),t&&(this._element.style.left=t+s)},getPosition:function(){return{top:this._element.style.top?parseInt(this._element.style.top,10):0,left:this._element.style.left?parseInt(this._element.style.left,10):0}},setSize:function(e,t){e&&(this._element.style.width=e+s),t&&(this._element.style.height=t+s)},getSize:function(){return{width:this._element.style.width?parseInt(this._element.style.width,10):0,height:this._element.style.height?parseInt(this._element.style.height,10):0}},setOffset:function(e,t){e&&(this._element.style.marginTop=e+s),t&&(this._element.style.marginLeft=t+s)},getOffset:function(){return{top:this._element.style.marginTop?parseInt(this._element.style.marginTop,10):0,left:this._element.style.marginLeft?parseInt(this._element.style.marginLeft,10):0}}},{})},{}],105:[function(e,t,n){"use strict";Object.defineProperties(n,{BacklightUI:{get:function(){return l}},__esModule:{value:!0}});var o,r,i=(o=e("_base"),o&&o.__esModule&&o||{default:o}).BaseUI,s=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}).addClass,a="ht__manualRowMove--backlight",l=function(e){$traceurRuntime.superConstructor(u).call(this,e)},u=l;$traceurRuntime.createClass(l,{build:function(){$traceurRuntime.superGet(this,u.prototype,"build").call(this),s(this._element,a)}},{},i)},{_base:104,"helpers/dom/element":47}],106:[function(e,t,n){"use strict";Object.defineProperties(n,{GuidelineUI:{get:function(){return l}},__esModule:{value:!0}});var o,r,i=(o=e("_base"),o&&o.__esModule&&o||{default:o}).BaseUI,s=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}).addClass,a="ht__manualRowMove--guideline",l=function(e){$traceurRuntime.superConstructor(u).call(this,e)},u=l;$traceurRuntime.createClass(l,{build:function(){$traceurRuntime.superGet(this,u.prototype,"build").call(this),s(this._element,a)}},{},i)},{_base:104,"helpers/dom/element":47}],107:[function(e,t,n){"use strict";Object.defineProperties(n,{ManualRowResize:{get:function(){return M}},__esModule:{value:!0}});var o,r,i,s,a,l,u,c,d=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,h=(r=e("_base.js"),r&&r.__esModule&&r||{default:r}).default,f=(i=e("helpers/dom/element"),i&&i.__esModule&&i||{default:i}),p=f.addClass,m=f.hasClass,g=f.removeClass,w=f.outerWidth,v=(s=e("eventManager"),s&&s.__esModule&&s||{default:s}).eventManager,y=(a=e("helpers/dom/event"),a&&a.__esModule&&a||{default:a}),b=(y.pageX,y.pageY),C=(l=e("helpers/array"),l&&l.__esModule&&l||{default:l}).arrayEach,_=(u=e("helpers/number"),u&&u.__esModule&&u||{default:u}).rangeEach,R=(c=e("plugins"),c&&c.__esModule&&c||{default:c}).registerPlugin,M=function(e){$traceurRuntime.superConstructor(S).call(this,e),this.currentTH=null,this.currentRow=null,this.selectedRows=[],this.currentHeight=null,this.newSize=null,this.startY=null,this.startHeight=null,this.startOffset=null,this.handle=document.createElement("DIV"),this.guide=document.createElement("DIV"),this.eventManager=v(this),this.pressed=null,this.dblclick=0,this.autoresizeTimeout=null,this.manualRowHeights=[],p(this.handle,"manualRowResizer"),p(this.guide,"manualRowResizerGuide")},S=M;$traceurRuntime.createClass(M,{isEnabled:function(){return this.hot.getSettings().manualRowResize},enablePlugin:function(){var e=this;if(!this.enabled){this.manualRowHeights=[];var t=this.hot.getSettings().manualRowResize,n=this.loadManualRowHeights();"undefined"!=typeof n?this.manualRowHeights=n:Array.isArray(t)?this.manualRowHeights=t:this.manualRowHeights=[],this.addHook("modifyRowHeight",function(t,n){return e.onModifyRowHeight(t,n)}),d.hooks.register("beforeRowResize"),d.hooks.register("afterRowResize"),this.bindEvents(),$traceurRuntime.superGet(this,S.prototype,"enablePlugin").call(this)}},updatePlugin:function(){var e=this.hot.getSettings().manualRowResize;Array.isArray(e)?this.manualRowHeights=e:e||(this.manualRowHeights=[])},disablePlugin:function(){$traceurRuntime.superGet(this,S.prototype,"disablePlugin").call(this)},saveManualRowHeights:function(){this.hot.runHooks("persistentStateSave","manualRowHeights",this.manualRowHeights)},loadManualRowHeights:function(){var e={};return this.hot.runHooks("persistentStateLoad","manualRowHeights",e),e.value},setupHandlePosition:function(e){var t=this;this.currentTH=e;var n=this.hot.view.wt.wtTable.getCoords(e).row,o=w(this.currentTH);if(n>=0){var r=this.currentTH.getBoundingClientRect();if(this.currentRow=n,this.selectedRows=[],this.hot.selection.isSelected()&&this.hot.selection.selectedHeader.rows){var i=this.hot.getSelectedRange(),s=i.from,a=i.to,l=s.row,u=a.row;l>=u&&(l=a.row,u=s.row),this.currentRow>=l&&this.currentRow<=u?_(l,u,function(e){return t.selectedRows.push(e)}):this.selectedRows.push(this.currentRow)}else this.selectedRows.push(this.currentRow);this.startOffset=r.top-6,this.startHeight=parseInt(r.height,10),this.handle.style.left=r.left+"px",this.handle.style.top=this.startOffset+this.startHeight+"px",this.handle.style.width=o+"px",this.hot.rootElement.appendChild(this.handle)}},refreshHandlePosition:function(){this.handle.style.top=this.startOffset+this.currentHeight+"px"},setupGuidePosition:function(){var e=parseInt(w(this.handle),10),t=parseInt(this.handle.style.left,10)+e,n=parseInt(this.hot.view.maximumVisibleElementWidth(0),10);p(this.handle,"active"),p(this.guide,"active"),this.guide.style.top=this.handle.style.top,this.guide.style.left=t+"px",this.guide.style.width=n-e+"px",this.hot.rootElement.appendChild(this.guide)},refreshGuidePosition:function(){this.guide.style.top=this.handle.style.top},hideHandleAndGuide:function(){g(this.handle,"active"),g(this.guide,"active")},checkIfRowHeader:function(e){if(e!=this.hot.rootElement){var t=e.parentNode;return"TBODY"===t.tagName||this.checkIfRowHeader(t)}return!1},getTHFromTargetElement:function(e){return"TABLE"!=e.tagName?"TH"==e.tagName?e:this.getTHFromTargetElement(e.parentNode):null},onMouseOver:function(e){if(this.checkIfRowHeader(e.target)){var t=this.getTHFromTargetElement(e.target);t&&(this.pressed||this.setupHandlePosition(t))}},afterMouseDownTimeout:function(){var e=this,t=function(){e.hot.forceFullRender=!0,e.hot.view.render(),e.hot.view.wt.wtOverlays.adjustElementsSize(!0)},n=function(n,o){var r=e.hot.runHooks("beforeRowResize",n,e.newSize,!0);void 0!==r&&(e.newSize=r),e.setManualSize(n,e.newSize),o&&t(),e.hot.runHooks("afterRowResize",n,e.newSize,!0)};if(this.dblclick>=2){var o=this.selectedRows.length;o>1?(C(this.selectedRows,function(e){n(e)}),t()):C(this.selectedRows,function(e){n(e,!0)})}this.dblclick=0,this.autoresizeTimeout=null},onMouseDown:function(e){var t=this;m(e.target,"manualRowResizer")&&(this.setupGuidePosition(),this.pressed=this.hot,null==this.autoresizeTimeout&&(this.autoresizeTimeout=setTimeout(function(){return t.afterMouseDownTimeout()},500),this.hot._registerTimeout(this.autoresizeTimeout)),this.dblclick++,this.startY=b(e),this.newSize=this.startHeight)},onMouseMove:function(e){var t=this;this.pressed&&(this.currentHeight=this.startHeight+(b(e)-this.startY),C(this.selectedRows,function(e){t.newSize=t.setManualSize(e,t.currentHeight)}),this.refreshHandlePosition(),this.refreshGuidePosition())},onMouseUp:function(e){var t=this,n=function(){t.hot.forceFullRender=!0,t.hot.view.render(),t.hot.view.wt.wtOverlays.adjustElementsSize(!0)},o=function(e,o){t.hot.runHooks("beforeRowResize",e,t.newSize),o&&n(),t.saveManualRowHeights(),t.hot.runHooks("afterRowResize",e,t.newSize)};if(this.pressed){if(this.hideHandleAndGuide(),this.pressed=!1,this.newSize!=this.startHeight){var r=this.selectedRows.length;r>1?(C(this.selectedRows,function(e){o(e)}),n()):C(this.selectedRows,function(e){o(e,!0)})}this.setupHandlePosition(this.currentTH)}},bindEvents:function(){var e=this;this.eventManager.addEventListener(this.hot.rootElement,"mouseover",function(t){return e.onMouseOver(t)}),this.eventManager.addEventListener(this.hot.rootElement,"mousedown",function(t){return e.onMouseDown(t)}),this.eventManager.addEventListener(window,"mousemove",function(t){return e.onMouseMove(t)}),this.eventManager.addEventListener(window,"mouseup",function(t){return e.onMouseUp(t)})},setManualSize:function(e,t){return e=this.hot.runHooks("modifyRow",e),this.manualRowHeights[e]=t,t},onModifyRowHeight:function(e,t){if(this.enabled){var n=this.hot.getPlugin("autoRowSize"),o=n?n.heights[t]:null;t=this.hot.runHooks("modifyRow",t);var r=this.manualRowHeights[t];if(void 0!==r&&(r===o||r>(e||0)))return r}return e}},{},h),R("manualRowResize",M)},{"_base.js":62,browser:24,eventManager:42,"helpers/array":43,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/number":52,plugins:61}],108:[function(e,t,n){"use strict";function o(){var e=[];return e.getInfo=function(e,t){
for(var n=0,o=this.length;n<o;n++)if(this[n].row<=e&&this[n].row+this[n].rowspan-1>=e&&this[n].col<=t&&this[n].col+this[n].colspan-1>=t)return this[n]},e.setInfo=function(e){for(var t=0,n=this.length;t<n;t++)if(this[t].row===e.row&&this[t].col===e.col)return void(this[t]=e);this.push(e)},e.removeInfo=function(e,t){for(var n=0,o=this.length;n<o;n++)if(this[n].row===e&&this[n].col===t){this.splice(n,1);break}},e}function r(e){if(this.mergedCellInfoCollection=new o,Array.isArray(e))for(var t=0,n=e.length;t<n;t++)this.mergedCellInfoCollection.setInfo(e[t])}function i(e,t){var n=this.getSettings().mergeCells;if(n&&!this.selection.isMultiple()){var o=this.mergeCells.mergedCellInfoCollection.getInfo(e[0],e[1]);o&&(e[0]=o.row,e[1]=o.col,e[2]=o.row+o.rowspan-1,e[3]=o.col+o.colspan-1)}}function s(e,t){this.mergeCells&&this.mergeCells.shiftCollection("right",e,t)}function a(e,t){this.mergeCells&&this.mergeCells.shiftCollection("left",e,t)}function l(e,t){this.mergeCells&&this.mergeCells.shiftCollection("down",e,t)}function u(e,t){this.mergeCells&&this.mergeCells.shiftCollection("up",e,t)}Object.defineProperties(n,{MergeCells:{get:function(){return r}},__esModule:{value:!0}});var c,d,h,f,p,m,g=(c=e("browser"),c&&c.__esModule&&c||{default:c}).default,w=((d=e("plugins"),d&&d.__esModule&&d||{default:d}).registerPlugin,(h=e("helpers/dom/event"),h&&h.__esModule&&h||{default:h}).stopImmediatePropagation),v=(f=e("3rdparty/walkontable/src/cell/coords"),f&&f.__esModule&&f||{default:f}).WalkontableCellCoords,y=(p=e("3rdparty/walkontable/src/cell/range"),p&&p.__esModule&&p||{default:p}).WalkontableCellRange,b=(m=e("3rdparty/walkontable/src/table"),m&&m.__esModule&&m||{default:m}).WalkontableTable;r.prototype.canMergeRange=function(e){return!e.isSingle()},r.prototype.mergeRange=function(e){if(this.canMergeRange(e)){var t=e.getTopLeftCorner(),n=e.getBottomRightCorner(),o={};o.row=t.row,o.col=t.col,o.rowspan=n.row-t.row+1,o.colspan=n.col-t.col+1,this.mergedCellInfoCollection.setInfo(o)}},r.prototype.mergeOrUnmergeSelection=function(e){var t=this.mergedCellInfoCollection.getInfo(e.from.row,e.from.col);t?this.unmergeSelection(e.from):this.mergeSelection(e)},r.prototype.mergeSelection=function(e){this.mergeRange(e)},r.prototype.unmergeSelection=function(e){var t=this.mergedCellInfoCollection.getInfo(e.row,e.col);this.mergedCellInfoCollection.removeInfo(t.row,t.col)},r.prototype.applySpanProperties=function(e,t,n){var o=this.mergedCellInfoCollection.getInfo(t,n);o?o.row===t&&o.col===n?(e.setAttribute("rowspan",o.rowspan),e.setAttribute("colspan",o.colspan)):(e.removeAttribute("rowspan"),e.removeAttribute("colspan"),e.style.display="none"):(e.removeAttribute("rowspan"),e.removeAttribute("colspan"))},r.prototype.modifyTransform=function(e,t,n){var o=function(e,t){return t.row>=e.row&&t.row<=e.row+e.rowspan-1},r=function(e,t){return t.col>=e.col&&t.col<=e.col+e.colspan-1},i=function(e){return new v(t.to.row+e.row,t.to.col+e.col)},s={row:n.row,col:n.col};if("modifyTransformStart"==e){this.lastDesiredCoords||(this.lastDesiredCoords=new v(null,null));for(var a,l=new v(t.highlight.row,t.highlight.col),u=this.mergedCellInfoCollection.getInfo(l.row,l.col),c=0,d=this.mergedCellInfoCollection.length;c<d;c++){var h=this.mergedCellInfoCollection[c];if(h=new v(h.row+h.rowspan-1,h.col+h.colspan-1),t.includes(h)){a=!0;break}}if(u){var f=new v(u.row,u.col),p=new v(u.row+u.rowspan-1,u.col+u.colspan-1),m=new y(f,f,p);m.includes(this.lastDesiredCoords)||(this.lastDesiredCoords=new v(null,null)),s.row=this.lastDesiredCoords.row?this.lastDesiredCoords.row-l.row:s.row,s.col=this.lastDesiredCoords.col?this.lastDesiredCoords.col-l.col:s.col,n.row>0?s.row=u.row+u.rowspan-1-l.row+n.row:n.row<0&&(s.row=l.row-u.row+n.row),n.col>0?s.col=u.col+u.colspan-1-l.col+n.col:n.col<0&&(s.col=l.col-u.col+n.col)}var g=new v(t.highlight.row+s.row,t.highlight.col+s.col),w=this.mergedCellInfoCollection.getInfo(g.row,g.col);w&&(this.lastDesiredCoords=g,s={row:w.row-l.row,col:w.col-l.col})}else if("modifyTransformEnd"==e)for(var c=0,d=this.mergedCellInfoCollection.length;c<d;c++){var b=this.mergedCellInfoCollection[c],f=new v(b.row,b.col),p=new v(b.row+b.rowspan-1,b.col+b.colspan-1),C=new y(f,f,p),_=t.getBordersSharedWith(C);if(C.isEqual(t))t.setDirection("NW-SE");else if(_.length>0){var R=t.highlight.isEqual(C.from);_.indexOf("top")>-1?t.to.isSouthEastOf(C.from)&&R?t.setDirection("NW-SE"):t.to.isSouthWestOf(C.from)&&R&&t.setDirection("NE-SW"):_.indexOf("bottom")>-1&&(t.to.isNorthEastOf(C.from)&&R?t.setDirection("SW-NE"):t.to.isNorthWestOf(C.from)&&R&&t.setDirection("SE-NW"))}var g=i(s),M=o(b,g),S=r(b,g);t.includesRange(C)&&(C.includes(g)||M||S)&&(M&&(s.row<0?s.row-=b.rowspan-1:s.row>0&&(s.row+=b.rowspan-1)),S&&(s.col<0?s.col-=b.colspan-1:s.col>0&&(s.col+=b.colspan-1)))}0!==s.row&&(n.row=s.row),0!==s.col&&(n.col=s.col)},r.prototype.shiftCollection=function(e,t,n){var o=[0,0];switch(e){case"right":o[0]+=1;break;case"left":o[0]-=1;break;case"down":o[1]+=1;break;case"up":o[1]-=1}for(var r=0;r<this.mergedCellInfoCollection.length;r++){var i=this.mergedCellInfoCollection[r];"right"===e||"left"===e?t<=i.col&&(i.col+=o[0]):t<=i.row&&(i.row+=o[1])}};var C=function(){var e=this,t=e.getSettings().mergeCells;t&&(e.mergeCells||(e.mergeCells=new r(t)))},_=function(){var e=this;e.mergeCells&&(e.view.wt.wtTable.getCell=function(t){if(e.getSettings().mergeCells){var n=e.mergeCells.mergedCellInfoCollection.getInfo(t.row,t.col);n&&(t=n)}return b.prototype.getCell.call(this,t)})},R=function(){var e=this,t=e.getSettings().mergeCells;if(t)if(e.mergeCells){if(e.mergeCells.mergedCellInfoCollection=new o,Array.isArray(t))for(var n=0,i=t.length;n<i;n++)e.mergeCells.mergedCellInfoCollection.setInfo(t[n])}else e.mergeCells=new r(t);else e.mergeCells&&(e.mergeCells.mergedCellInfoCollection=new o)},M=function(e){if(this.mergeCells){var t=(e.ctrlKey||e.metaKey)&&!e.altKey;t&&77===e.keyCode&&(this.mergeCells.mergeOrUnmergeSelection(this.getSelectedRange()),this.render(),w(e))}},S=function(e){this.getSettings().mergeCells&&(e.items.push(g.plugins.ContextMenu.SEPARATOR),e.items.push({key:"mergeCells",name:function(){var e=this.getSelected(),t=this.mergeCells.mergedCellInfoCollection.getInfo(e[0],e[1]);return t?"Unmerge cells":"Merge cells"},callback:function(){this.mergeCells.mergeOrUnmergeSelection(this.getSelectedRange()),this.render()},disabled:function(){return this.selection.selectedHeader.corner}}))},E=function(e,t,n,o,r,i){this.mergeCells&&this.mergeCells.applySpanProperties(e,t,n)},O=function(e){return function(t){var n=this.getSettings().mergeCells;if(n){var o=this.getSelectedRange();if(this.mergeCells.modifyTransform(e,o,t),"modifyTransformEnd"===e){var r=this.countRows(),i=this.countCols();o.from.row<0?o.from.row=0:o.from.row>0&&o.from.row>=r&&(o.from.row=o.from-1),o.from.col<0?o.from.col=0:o.from.col>0&&o.from.col>=i&&(o.from.col=i-1)}}}},T=function(e){this.lastDesiredCoords=null;var t=this.getSettings().mergeCells;if(t){var n=this.getSelectedRange();n.highlight=new v(n.highlight.row,n.highlight.col),n.to=e;var o=!1;do{o=!1;for(var r=0,i=this.mergeCells.mergedCellInfoCollection.length;r<i;r++){var s=this.mergeCells.mergedCellInfoCollection[r],a=new v(s.row,s.col),l=new v(s.row+s.rowspan-1,s.col+s.colspan-1),u=new y(a,a,l);n.expandByRange(u)&&(e.row=n.to.row,e.col=n.to.col,o=!0)}}while(o)}},k=function(e,t){if(t&&"area"==t){var n=this.getSettings().mergeCells;if(n)for(var o=this.getSelectedRange(),r=new y(o.from,o.from,o.from),i=new y(o.to,o.to,o.to),s=0,a=this.mergeCells.mergedCellInfoCollection.length;s<a;s++){var l=this.mergeCells.mergedCellInfoCollection[s],u=new v(l.row,l.col),c=new v(l.row+l.rowspan-1,l.col+l.colspan-1),d=new y(u,u,c);r.expandByRange(d)&&(e[0]=r.from.row,e[1]=r.from.col),i.expandByRange(d)&&(e[2]=i.from.row,e[3]=i.from.col)}}},x=function(e,t,n){var o=this.getSettings().mergeCells;if(o){var r=this.mergeCells.mergedCellInfoCollection.getInfo(e,t);!r||r.row==e&&r.col==t||(n.copyable=!1)}},D=function(e){var t=this.getSettings().mergeCells;if(t)for(var n,o=this.countCols(),r=0;r<o;r++){if(n=this.mergeCells.mergedCellInfoCollection.getInfo(e.startRow,r),n&&n.row<e.startRow)return e.startRow=n.row,D.call(this,e);if(n=this.mergeCells.mergedCellInfoCollection.getInfo(e.endRow,r)){var i=n.row+n.rowspan-1;if(i>e.endRow)return e.endRow=i,D.call(this,e)}}},H=function(e){var t=this.getSettings().mergeCells;if(t)for(var n,o=this.countRows(),r=0;r<o;r++){if(n=this.mergeCells.mergedCellInfoCollection.getInfo(r,e.startColumn),n&&n.col<e.startColumn)return e.startColumn=n.col,H.call(this,e);if(n=this.mergeCells.mergedCellInfoCollection.getInfo(r,e.endColumn)){var i=n.col+n.colspan-1;if(i>e.endColumn)return e.endColumn=i,H.call(this,e)}}},A=function(e){if(e&&this.mergeCells){var t=this.mergeCells.mergedCellInfoCollection,n=this.getSelectedRange();for(var o in t)if(n.highlight.row==t[o].row&&n.highlight.col==t[o].col&&n.to.row==t[o].row+t[o].rowspan-1&&n.to.col==t[o].col+t[o].colspan-1)return!1}return e};g.hooks.add("beforeInit",C),g.hooks.add("afterInit",_),g.hooks.add("afterUpdateSettings",R),g.hooks.add("beforeKeyDown",M),g.hooks.add("modifyTransformStart",O("modifyTransformStart")),g.hooks.add("modifyTransformEnd",O("modifyTransformEnd")),g.hooks.add("beforeSetRangeEnd",T),g.hooks.add("beforeDrawBorders",k),g.hooks.add("afterIsMultipleSelection",A),g.hooks.add("afterRenderer",E),g.hooks.add("afterContextMenuDefaultOptions",S),g.hooks.add("afterGetCellMeta",x),g.hooks.add("afterViewportRowCalculatorOverride",D),g.hooks.add("afterViewportColumnCalculatorOverride",H),g.hooks.add("modifyAutofillRange",i),g.hooks.add("afterCreateCol",s),g.hooks.add("afterRemoveCol",a),g.hooks.add("afterCreateRow",l),g.hooks.add("afterRemoveRow",u),g.MergeCells=r},{"3rdparty/walkontable/src/cell/coords":6,"3rdparty/walkontable/src/cell/range":7,"3rdparty/walkontable/src/table":21,browser:24,"helpers/dom/event":48,plugins:61}],109:[function(e,t,n){"use strict";Object.defineProperties(n,{MultipleSelectionHandles:{get:function(){return w}},__esModule:{value:!0}});var o,r,i,s,a,l,u=((o=e("browser"),o&&o.__esModule&&o||{default:o}).default,r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),c=u.getWindowScrollTop,d=u.hasClass,h=u.getWindowScrollLeft,f=(i=e("helpers/browser"),i&&i.__esModule&&i||{default:i}).isMobileBrowser,p=(s=e("_base"),s&&s.__esModule&&s||{default:s}).default,m=(a=e("eventManager"),a&&a.__esModule&&a||{default:a}).EventManager,g=(l=e("plugins"),l&&l.__esModule&&l||{default:l}).registerPlugin,w=function(e){$traceurRuntime.superConstructor(v).call(this,e),this.dragged=[],this.eventManager=null,this.lastSetCell=null},v=w;$traceurRuntime.createClass(w,{isEnabled:function(){return f()},enablePlugin:function(){this.enabled||(this.eventManager||(this.eventManager=new m(this)),this.registerListeners(),$traceurRuntime.superGet(this,v.prototype,"enablePlugin").call(this))},registerListeners:function(){function e(e){if(1===t.dragged.length)return t.dragged.splice(0,t.dragged.length),!0;var n=t.dragged.indexOf(e);return n!=-1&&void(0===n?t.dragged=t.dragged.slice(0,1):1==n&&(t.dragged=t.dragged.slice(-1)))}var t=this;this.eventManager.addEventListener(this.hot.rootElement,"touchstart",function(e){var n;return d(e.target,"topLeftSelectionHandle-HitArea")?(n=t.hot.getSelectedRange(),t.dragged.push("topLeft"),t.touchStartRange={width:n.getWidth(),height:n.getHeight(),direction:n.getDirection()},e.preventDefault(),!1):d(e.target,"bottomRightSelectionHandle-HitArea")?(n=t.hot.getSelectedRange(),t.dragged.push("bottomRight"),t.touchStartRange={width:n.getWidth(),height:n.getHeight(),direction:n.getDirection()},e.preventDefault(),!1):void 0}),this.eventManager.addEventListener(this.hot.rootElement,"touchend",function(n){return d(n.target,"topLeftSelectionHandle-HitArea")?(e.call(t,"topLeft"),t.touchStartRange=void 0,n.preventDefault(),!1):d(n.target,"bottomRightSelectionHandle-HitArea")?(e.call(t,"bottomRight"),t.touchStartRange=void 0,n.preventDefault(),!1):void 0}),this.eventManager.addEventListener(this.hot.rootElement,"touchmove",function(e){var n,o,r,i,s,a,l,u=c(),d=h();0!==t.dragged.length&&(n=document.elementFromPoint(e.touches[0].screenX-d,e.touches[0].screenY-u),n&&n!==t.lastSetCell&&("TD"!=n.nodeName&&"TH"!=n.nodeName||(o=t.hot.getCoords(n),o.col==-1&&(o.col=0),r=t.hot.getSelectedRange(),i=r.getWidth(),s=r.getHeight(),a=r.getDirection(),1==i&&1==s&&t.hot.selection.setRangeEnd(o),l=t.getCurrentRangeCoords(r,o,t.touchStartRange.direction,a,t.dragged[0]),null!==l.start&&t.hot.selection.setRangeStart(l.start),t.hot.selection.setRangeEnd(l.end),t.lastSetCell=n),e.preventDefault()))})},getCurrentRangeCoords:function(e,t,n,o,r){var i=e.getTopLeftCorner(),s=e.getBottomRightCorner(),a=e.getBottomLeftCorner(),l=e.getTopRightCorner(),u={start:null,end:null};switch(n){case"NE-SW":switch(o){case"NE-SW":case"NW-SE":u="topLeft"==r?{start:new WalkontableCellCoords(t.row,e.highlight.col),end:new WalkontableCellCoords(a.row,t.col)}:{start:new WalkontableCellCoords(e.highlight.row,t.col),end:new WalkontableCellCoords(t.row,i.col)};break;case"SE-NW":"bottomRight"==r&&(u={start:new WalkontableCellCoords(s.row,t.col),end:new WalkontableCellCoords(t.row,i.col)})}break;case"NW-SE":switch(o){case"NE-SW":"topLeft"==r?u={start:t,end:a}:u.end=t;break;case"NW-SE":"topLeft"==r?u={start:t,end:s}:u.end=t;break;case"SE-NW":"topLeft"==r?u={start:t,end:i}:u.end=t;break;case"SW-NE":"topLeft"==r?u={start:t,end:l}:u.end=t}break;case"SW-NE":switch(o){case"NW-SE":u="bottomRight"==r?{start:new WalkontableCellCoords(t.row,i.col),end:new WalkontableCellCoords(a.row,t.col)}:{start:new WalkontableCellCoords(i.row,t.col),end:new WalkontableCellCoords(t.row,s.col)};break;case"SW-NE":u="topLeft"==r?{start:new WalkontableCellCoords(e.highlight.row,t.col),end:new WalkontableCellCoords(t.row,s.col)}:{start:new WalkontableCellCoords(t.row,i.col),end:new WalkontableCellCoords(i.row,t.col)};break;case"SE-NW":"bottomRight"==r?u={start:new WalkontableCellCoords(t.row,l.col),end:new WalkontableCellCoords(i.row,t.col)}:"topLeft"==r&&(u={start:a,end:t})}break;case"SE-NW":switch(o){case"NW-SE":case"NE-SW":case"SW-NE":"topLeft"==r&&(u.end=t);break;case"SE-NW":"topLeft"==r?u.end=t:u={start:t,end:i}}}return u},isDragged:function(){return this.dragged.length>0}},{},p),g("multipleSelectionHandles",w)},{_base:62,browser:24,eventManager:42,"helpers/browser":44,"helpers/dom/element":47,plugins:61}],110:[function(e,t,n){"use strict";Object.defineProperties(n,{DataObserver:{get:function(){return d}},__esModule:{value:!0}});var o,r,i,s,a=(o=e("jsonpatch"),o&&o.__esModule&&o||{default:o}).default,l=(r=e("../../mixins/localHooks"),r&&r.__esModule&&r||{default:r}).localHooks,u=(i=e("../../helpers/object"),i&&i.__esModule&&i||{default:i}).mixin,c=(s=e("utils"),s&&s.__esModule&&s||{default:s}).cleanPatches,d=function(e){this.observedData=null,this.observer=null,this.paused=!1,this.setObservedData(e)};$traceurRuntime.createClass(d,{setObservedData:function(e){var t=this;this.observer&&a.unobserve(this.observedData,this.observer),this.observedData=e,this.observer=a.observe(this.observedData,function(e){return t.onChange(e)})},isPaused:function(){return this.paused},pause:function(){this.paused=!0},resume:function(){this.paused=!1},onChange:function(e){this.runLocalHooks("change",c(e))},destroy:function(){a.unobserve(this.observedData,this.observer),this.observedData=null,this.observer=null}},{}),u(d,l)},{"../../helpers/object":53,"../../mixins/localHooks":58,jsonpatch:"jsonpatch",utils:112}],111:[function(e,t,n){"use strict";Object.defineProperties(n,{ObserveChanges:{get:function(){return p}},__esModule:{value:!0}});var o,r,i,s,a,l,u=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,c=(r=e("_base"),r&&r.__esModule&&r||{default:r}).default,d=((i=e("jsonpatch"),i&&i.__esModule&&i||{default:i}).default,(s=e("dataObserver"),s&&s.__esModule&&s||{default:s}).DataObserver),h=(a=e("helpers/array"),a&&a.__esModule&&a||{default:a}).arrayEach,f=(l=e("plugins"),l&&l.__esModule&&l||{default:l}).registerPlugin;u.hooks.register("afterChangesObserved");var p=function(e){$traceurRuntime.superConstructor(m).call(this,e),this.observer=null},m=p;$traceurRuntime.createClass(p,{isEnabled:function(){return this.hot.getSettings().observeChanges},enablePlugin:function(){var e=this;this.enabled||(this.observer||(this.observer=new d(this.hot.getSourceData()),this._exposePublicApi()),this.observer.addLocalHook("change",function(t){return e.onDataChange(t)}),this.addHook("afterCreateRow",function(){return e.onAfterTableAlter()}),this.addHook("afterRemoveRow",function(){return e.onAfterTableAlter()}),this.addHook("afterCreateCol",function(){return e.onAfterTableAlter()}),this.addHook("afterRemoveCol",function(){return e.onAfterTableAlter()}),this.addHook("afterChange",function(t,n){return e.onAfterTableAlter(n)}),this.addHook("afterLoadData",function(t){return e.onAfterLoadData(t)}),$traceurRuntime.superGet(this,m.prototype,"enablePlugin").call(this))},disablePlugin:function(){this.observer&&(this.observer.destroy(),this.observer=null,this._deletePublicApi()),$traceurRuntime.superGet(this,m.prototype,"disablePlugin").call(this)},onDataChange:function(e){var t=this;if(!this.observer.isPaused()){var n=this.pluginName+".change",o={add:function(e){isNaN(e.col)?t.hot.runHooks("afterCreateRow",e.row,1,n):t.hot.runHooks("afterCreateCol",e.col,1,n)},remove:function(e){isNaN(e.col)?t.hot.runHooks("afterRemoveRow",e.row,1,n):t.hot.runHooks("afterRemoveCol",e.col,1,n)},replace:function(e){t.hot.runHooks("afterChange",[e.row,e.col,null,e.value],n)}};h(e,function(e){o[e.op]&&o[e.op](e)}),this.hot.render()}this.hot.runHooks("afterChangesObserved")},onAfterTableAlter:function(e){var t=this;"loadData"!==e&&(this.observer.pause(),this.hot.addHookOnce("afterChangesObserved",function(){return t.observer.resume()}))},onAfterLoadData:function(e){e||this.observer.setObservedData(this.hot.getSourceData())},destroy:function(){this.observer&&(this.observer.destroy(),this._deletePublicApi()),$traceurRuntime.superGet(this,m.prototype,"destroy").call(this)},_exposePublicApi:function(){var e=this,t=this.hot;t.pauseObservingChanges=function(){return e.observer.pause()},t.resumeObservingChanges=function(){return e.observer.resume()},t.isPausedObservingChanges=function(){return e.observer.isPaused()}},_deletePublicApi:function(){var e=this.hot;delete e.pauseObservingChanges,delete e.resumeObservingChanges,delete e.isPausedObservingChanges}},{},c),f("observeChanges",p)},{_base:62,browser:24,dataObserver:110,"helpers/array":43,jsonpatch:"jsonpatch",plugins:61}],112:[function(e,t,n){"use strict";function o(e){var t=[];return e=a(e,function(e){return!/[\/]length/gi.test(e.path)&&!!r(e.path)}),e=l(e,function(e){var t=r(e.path);return e.row=t.row,e.col=t.col,e}),e=a(e,function(e){if(["add","remove"].indexOf(e.op)!==-1&&!isNaN(e.col)){if(t.indexOf(e.col)!==-1)return!1;t.push(e.col)}return!0}),t.length=0,e}function r(e){var t=e.match(/^\/(\d+)\/?(.*)?$/);if(!t)return null;var n=t,o=n[1],r=n[2];return{row:parseInt(o,10),col:/^\d*$/.test(r)?parseInt(r,10):r}}Object.defineProperties(n,{cleanPatches:{get:function(){return o}},parsePath:{get:function(){return r}},__esModule:{value:!0}});var i,s=(i=e("../../helpers/array"),i&&i.__esModule&&i||{default:i}),a=s.arrayFilter,l=s.arrayMap},{"../../helpers/array":43}],113:[function(e,t,n){"use strict";function o(e){var t,n=function(){window.localStorage[e+"__persistentStateKeys"]=JSON.stringify(t)},o=function(){var n=window.localStorage[e+"__persistentStateKeys"],o="string"==typeof n?JSON.parse(n):void 0;t=o?o:[]},r=function(){t=[],n()};o(),this.saveValue=function(o,r){window.localStorage[e+"_"+o]=JSON.stringify(r),t.indexOf(o)==-1&&(t.push(o),n())},this.loadValue=function(t,n){t="undefined"==typeof t?n:t;var o=window.localStorage[e+"_"+t];return"undefined"==typeof o?void 0:JSON.parse(o)},this.reset=function(t){window.localStorage.removeItem(e+"_"+t)},this.resetAll=function(){for(var n=0;n<t.length;n++)window.localStorage.removeItem(e+"_"+t[n]);r()}}function r(){function e(){var e=this;for(var t in r)r.hasOwnProperty(t)&&e.addHook(t,r[t])}function t(){var e=this;for(var t in r)r.hasOwnProperty(t)&&e.removeHook(t,r[t])}var n=this;this.init=function(){var r=this,i=r.getSettings().persistentState;return n.enabled=!!i,n.enabled?(r.storage||(r.storage=new o(r.rootElement.id)),r.resetState=n.resetValue,void e.call(r)):void t.call(r)},this.saveValue=function(e,t){var n=this;n.storage.saveValue(e,t)},this.loadValue=function(e,t){var n=this;t.value=n.storage.loadValue(e)},this.resetValue=function(e){var t=this;"undefined"==typeof e?t.storage.resetAll():t.storage.reset(e)};var r={persistentStateSave:n.saveValue,persistentStateLoad:n.loadValue,persistentStateReset:n.resetValue};for(var i in r)r.hasOwnProperty(i)&&a.hooks.register(i)}Object.defineProperties(n,{HandsontablePersistentState:{get:function(){return r}},__esModule:{value:!0}});var i,s,a=(i=e("browser"),i&&i.__esModule&&i||{default:i}).default,l=((s=e("plugins"),s&&s.__esModule&&s||{default:s}).registerPlugin,new r);a.hooks.add("beforeInit",l.init),a.hooks.add("afterUpdateSettings",l.init)},{browser:24,plugins:61}],114:[function(e,t,n){"use strict";function o(){var e=this,t=!!e.getSettings().search;t?e.search=new a.Search(e):delete e.search}var r,i,s,a=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,l=(i=e("helpers/dom/element"),i&&i.__esModule&&i||{default:i}),u=l.addClass,c=l.removeClass,d=(s=e("renderers"),s&&s.__esModule&&s||{default:s}),h=d.registerRenderer,f=d.getRenderer;a.Search=function(e){this.query=function(t,n,o){var r=e.countRows(),i=e.countCols(),s=[];n||(n=a.Search.global.getDefaultCallback()),o||(o=a.Search.global.getDefaultQueryMethod());for(var l=0;l<r;l++)for(var u=0;u<i;u++){var c=e.getDataAtCell(l,u),d=e.getCellMeta(l,u),h=d.search.callback||n,f=d.search.queryMethod||o,p=f(t,c);if(p){var m={row:l,col:u,data:c};s.push(m)}h&&h(e,l,u,c,p)}return s}},a.Search.DEFAULT_CALLBACK=function(e,t,n,o,r){e.getCellMeta(t,n).isSearchResult=r},a.Search.DEFAULT_QUERY_METHOD=function(e,t){return!("undefined"==typeof e||null==e||!e.toLowerCase||0===e.length)&&("undefined"!=typeof t&&null!=t&&t.toString().toLowerCase().indexOf(e.toLowerCase())!=-1)},a.Search.DEFAULT_SEARCH_RESULT_CLASS="htSearchResult",a.Search.global=function(){var e=a.Search.DEFAULT_CALLBACK,t=a.Search.DEFAULT_QUERY_METHOD,n=a.Search.DEFAULT_SEARCH_RESULT_CLASS;return{getDefaultCallback:function(){return e},setDefaultCallback:function(t){e=t},getDefaultQueryMethod:function(){return t},setDefaultQueryMethod:function(e){t=e},getDefaultSearchResultClass:function(){return n},setDefaultSearchResultClass:function(e){n=e}}}(),a.SearchCellDecorator=function(e,t,n,o,r,i,s){var l=null!==s.search&&"object"==typeof s.search&&s.search.searchResultClass||a.Search.global.getDefaultSearchResultClass();s.isSearchResult?u(t,l):c(t,l)};var p=f("base");h("base",function(e,t,n,o,r,i,s){p.apply(this,arguments),a.SearchCellDecorator.apply(this,arguments)}),a.hooks.add("afterInit",o),a.hooks.add("afterUpdateSettings",o)},{browser:24,"helpers/dom/element":47,renderers:117}],115:[function(e,t,n){"use strict";Object.defineProperties(n,{TouchScroll:{get:function(){return w}},__esModule:{value:!0}});var o,r,i,s,a,l,u=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,c=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),d=c.addClass,h=c.removeClass,f=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}).arrayEach,p=(s=e("_base"),s&&s.__esModule&&s||{default:s}).default,m=(a=e("plugins"),a&&a.__esModule&&a||{default:a}).registerPlugin,g=(l=e("helpers/feature"),l&&l.__esModule&&l||{default:l}).isTouchSupported,w=function(e){$traceurRuntime.superConstructor(v).call(this,e),this.scrollbars=[],this.clones=[],this.lockedCollection=!1},v=w;$traceurRuntime.createClass(w,{isEnabled:function(){return g()},enablePlugin:function(){var e=this;this.enabled||(this.addHook("afterRender",function(){return e.onAfterRender()}),this.registerEvents(),$traceurRuntime.superGet(this,v.prototype,"enablePlugin").call(this))},updatePlugin:function(){this.lockedCollection=!1,$traceurRuntime.superGet(this,v.prototype,"updatePlugin").call(this)},disablePlugin:function(){$traceurRuntime.superGet(this,v.prototype,"disablePlugin").call(this)},registerEvents:function(){var e=this;this.addHook("beforeTouchScroll",function(){return e.onBeforeTouchScroll()}),this.addHook("afterMomentumScroll",function(){return e.onAfterMomentumScroll()})},onAfterRender:function(){if(!this.lockedCollection){var e=this.hot.view.wt.wtOverlays,t=e.topOverlay,n=e.bottomOverlay,o=e.leftOverlay,r=e.topLeftCornerOverlay,i=e.bottomLeftCornerOverlay;this.lockedCollection=!0,this.scrollbars.length=0,this.scrollbars.push(t),n.clone&&this.scrollbars.push(n),this.scrollbars.push(o),r&&this.scrollbars.push(r),i&&i.clone&&this.scrollbars.push(i),this.clones.length=0,t.needFullRender&&this.clones.push(t.clone.wtTable.holder.parentNode),n.needFullRender&&this.clones.push(n.clone.wtTable.holder.parentNode),o.needFullRender&&this.clones.push(o.clone.wtTable.holder.parentNode),r&&this.clones.push(r.clone.wtTable.holder.parentNode),i&&i.clone&&this.clones.push(i.clone.wtTable.holder.parentNode)}},onBeforeTouchScroll:function(){u.freezeOverlays=!0,f(this.clones,function(e){d(e,"hide-tween")})},onAfterMomentumScroll:function(){var e=this;u.freezeOverlays=!1,f(this.clones,function(e){h(e,"hide-tween"),d(e,"show-tween")}),setTimeout(function(){f(e.clones,function(e){h(e,"show-tween")})},400),f(this.scrollbars,function(e){e.refresh(),e.resetFixedPosition()}),this.hot.view.wt.wtOverlays.syncScrollWithMaster()}},{},p),m("touchScroll",w)},{_base:62,browser:24,"helpers/array":43,"helpers/dom/element":47,"helpers/feature":49,plugins:61}],116:[function(e,t,n){"use strict";function o(){var e=this,t="undefined"==typeof e.getSettings().undo||e.getSettings().undo;t?e.undoRedo||(e.undoRedo=new f.UndoRedo(e),s(e),e.addHook("beforeKeyDown",r),e.addHook("afterChange",i)):e.undoRedo&&(delete e.undoRedo,a(e),e.removeHook("beforeKeyDown",r),e.removeHook("afterChange",i))}function r(e){var t=this,n=(e.ctrlKey||e.metaKey)&&!e.altKey;n&&(89===e.keyCode||e.shiftKey&&90===e.keyCode?(t.undoRedo.redo(),y(e)):90===e.keyCode&&(t.undoRedo.undo(),y(e)))}function i(e,t){var n=this;if("loadData"===t)return n.undoRedo.clear()}function s(e){e.undo=function(){return e.undoRedo.undo()},e.redo=function(){return e.undoRedo.redo()},e.isUndoAvailable=function(){return e.undoRedo.isUndoAvailable()},e.isRedoAvailable=function(){return e.undoRedo.isRedoAvailable()},e.clearUndo=function(){return e.undoRedo.clear()}}function a(e){delete e.undo,delete e.redo,delete e.isUndoAvailable,delete e.isRedoAvailable,delete e.clearUndo}var l,u,c,d,h,f=(l=e("browser"),l&&l.__esModule&&l||{default:l}).default,p=(u=e("helpers/array"),u&&u.__esModule&&u||{default:u}).arrayMap,m=(c=e("helpers/number"),c&&c.__esModule&&c||{default:c}).rangeEach,g=(d=e("helpers/object"),d&&d.__esModule&&d||{default:d}),w=g.inherit,v=g.deepClone,y=(h=e("helpers/dom/event"),h&&h.__esModule&&h||{default:h}).stopImmediatePropagation;f.UndoRedo=function(e){var t=this;this.instance=e,this.doneActions=[],this.undoneActions=[],this.ignoreNewActions=!1,e.addHook("afterChange",function(e,n){e&&"UndoRedo.undo"!==n&&"UndoRedo.redo"!==n&&t.done(new f.UndoRedo.ChangeAction(e))}),e.addHook("afterCreateRow",function(e,n,o){if("UndoRedo.undo"!==o&&"UndoRedo.undo"!==o&&"auto"!==o){var r=new f.UndoRedo.CreateRowAction(e,n);t.done(r)}}),e.addHook("beforeRemoveRow",function(e,n,o,r){if("UndoRedo.undo"!==r&&"UndoRedo.redo"!==r&&"auto"!==r){var i=t.instance.getSourceDataArray();e=(i.length+e)%i.length;var s=v(i.slice(e,e+n));t.done(new f.UndoRedo.RemoveRowAction(e,s))}}),e.addHook("afterCreateCol",function(e,n,o){"UndoRedo.undo"!==o&&"UndoRedo.redo"!==o&&"auto"!==o&&t.done(new f.UndoRedo.CreateColumnAction(e,n))}),e.addHook("beforeRemoveCol",function(n,o,r,i){if("UndoRedo.undo"!==i&&"UndoRedo.redo"!==i&&"auto"!==i){var s=t.instance.getSourceDataArray();n=(t.instance.countCols()+n)%t.instance.countCols();var a=[],l=[],u=[];m(s.length-1,function(t){var r=[],i=s[t];m(n,n+(o-1),function(t){r.push(i[e.runHooks("modifyCol",t)])}),a.push(r)}),m(o-1,function(t){u.push(e.runHooks("modifyCol",n+t))}),Array.isArray(e.getSettings().colHeaders)&&m(o-1,function(t){l.push(e.getSettings().colHeaders[e.runHooks("modifyCol",n+t)]||null)});var c=t.instance.getPlugin("manualColumnMove"),d=c.isEnabled()?c.columnsMapper.__arrayMap:[],h=new f.UndoRedo.RemoveColumnAction(n,u,a,l,d);t.done(h)}}),e.addHook("beforeCellAlignment",function(e,n,o,r){var i=new f.UndoRedo.CellAlignmentAction(e,n,o,r);t.done(i)}),e.addHook("beforeFilter",function(e){t.done(new f.UndoRedo.FiltersAction(e))}),e.addHook("beforeRowMove",function(e,n){e!==!1&&t.done(new f.UndoRedo.RowMoveAction(e,n))})},f.UndoRedo.prototype.done=function(e){this.ignoreNewActions||(this.doneActions.push(e),this.undoneActions.length=0)},f.UndoRedo.prototype.undo=function(){if(this.isUndoAvailable()){var e=this.doneActions.pop(),t=v(e),n=this.instance,o=n.runHooks("beforeUndo",t);if(o===!1)return;this.ignoreNewActions=!0;var r=this;e.undo(this.instance,function(){r.ignoreNewActions=!1,r.undoneActions.push(e)}),n.runHooks("afterUndo",t)}},f.UndoRedo.prototype.redo=function(){if(this.isRedoAvailable()){var e=this.undoneActions.pop(),t=v(e),n=this.instance,o=n.runHooks("beforeRedo",t);if(o===!1)return;this.ignoreNewActions=!0;var r=this;e.redo(this.instance,function(){r.ignoreNewActions=!1,r.doneActions.push(e)}),n.runHooks("afterRedo",t)}},f.UndoRedo.prototype.isUndoAvailable=function(){return this.doneActions.length>0},f.UndoRedo.prototype.isRedoAvailable=function(){return this.undoneActions.length>0},f.UndoRedo.prototype.clear=function(){this.doneActions.length=0,this.undoneActions.length=0},f.UndoRedo.Action=function(){},f.UndoRedo.Action.prototype.undo=function(){},f.UndoRedo.Action.prototype.redo=function(){},f.UndoRedo.ChangeAction=function(e){this.changes=e,this.actionType="change"},w(f.UndoRedo.ChangeAction,f.UndoRedo.Action),f.UndoRedo.ChangeAction.prototype.undo=function(e,t){for(var n=v(this.changes),o=e.countEmptyRows(!0),r=e.countEmptyCols(!0),i=0,s=n.length;i<s;i++)n[i].splice(3,1);e.addHookOnce("afterChange",t),e.setDataAtRowProp(n,null,null,"UndoRedo.undo");for(var a=0,l=n.length;a<l;a++)e.getSettings().minSpareRows&&n[a][0]+1+e.getSettings().minSpareRows===e.countRows()&&o==e.getSettings().minSpareRows&&(e.alter("remove_row",parseInt(n[a][0]+1,10),e.getSettings().minSpareRows),e.undoRedo.doneActions.pop()),e.getSettings().minSpareCols&&n[a][1]+1+e.getSettings().minSpareCols===e.countCols()&&r==e.getSettings().minSpareCols&&(e.alter("remove_col",parseInt(n[a][1]+1,10),e.getSettings().minSpareCols),e.undoRedo.doneActions.pop())},f.UndoRedo.ChangeAction.prototype.redo=function(e,t){for(var n=v(this.changes),o=0,r=n.length;o<r;o++)n[o].splice(2,1);e.addHookOnce("afterChange",t),e.setDataAtRowProp(n,null,null,"UndoRedo.redo")},f.UndoRedo.CreateRowAction=function(e,t){this.index=e,this.amount=t,this.actionType="insert_row"},w(f.UndoRedo.CreateRowAction,f.UndoRedo.Action),f.UndoRedo.CreateRowAction.prototype.undo=function(e,t){var n=e.countRows(),o=e.getSettings().minSpareRows;this.index>=n&&this.index-o<n&&(this.index-=o),e.addHookOnce("afterRemoveRow",t),e.alter("remove_row",this.index,this.amount,"UndoRedo.undo")},f.UndoRedo.CreateRowAction.prototype.redo=function(e,t){e.addHookOnce("afterCreateRow",t),e.alter("insert_row",this.index,this.amount,"UndoRedo.redo")},f.UndoRedo.RemoveRowAction=function(e,t){this.index=e,this.data=t,this.actionType="remove_row"},w(f.UndoRedo.RemoveRowAction,f.UndoRedo.Action),f.UndoRedo.RemoveRowAction.prototype.undo=function(e,t){e.alter("insert_row",this.index,this.data.length,"UndoRedo.undo"),e.addHookOnce("afterRender",t),e.populateFromArray(this.index,0,this.data,void 0,void 0,"UndoRedo.undo")},f.UndoRedo.RemoveRowAction.prototype.redo=function(e,t){e.addHookOnce("afterRemoveRow",t),
e.alter("remove_row",this.index,this.data.length,"UndoRedo.redo")},f.UndoRedo.CreateColumnAction=function(e,t){this.index=e,this.amount=t,this.actionType="insert_col"},w(f.UndoRedo.CreateColumnAction,f.UndoRedo.Action),f.UndoRedo.CreateColumnAction.prototype.undo=function(e,t){e.addHookOnce("afterRemoveCol",t),e.alter("remove_col",this.index,this.amount,"UndoRedo.undo")},f.UndoRedo.CreateColumnAction.prototype.redo=function(e,t){e.addHookOnce("afterCreateCol",t),e.alter("insert_col",this.index,this.amount,"UndoRedo.redo")},f.UndoRedo.RemoveColumnAction=function(e,t,n,o,r){this.index=e,this.indexes=t,this.data=n,this.amount=this.data[0].length,this.headers=o,this.columnPositions=r.slice(0),this.actionType="remove_col"},w(f.UndoRedo.RemoveColumnAction,f.UndoRedo.Action),f.UndoRedo.RemoveColumnAction.prototype.undo=function(e,t){var n,o=this,r=this.indexes.slice(0).sort(),i=function(e,t,n){return n[o.indexes.indexOf(r[t])]},s=[];m(this.data.length-1,function(e){s[e]=p(o.data[e],i)});var a=[];a=p(this.headers,i);var l=[];f.hooks.run(e,"beforeCreateCol",this.indexes[0],this.indexes[this.indexes.length-1],"UndoRedo.undo"),m(this.data.length-1,function(t){n=e.getSourceDataAtRow(t),m(r.length-1,function(e){n.splice(r[e],0,s[t][e]),l.push([t,r[e],null,s[t][e]])})}),e.getPlugin("formulas")&&e.getPlugin("formulas").onAfterSetDataAtCell(l),"undefined"!=typeof this.headers&&m(a.length-1,function(t){e.getSettings().colHeaders.splice(r[t],0,a[t])}),e.getPlugin("manualColumnMove")&&(e.getPlugin("manualColumnMove").columnsMapper.__arrayMap=this.columnPositions),e.addHookOnce("afterRender",t),f.hooks.run(e,"afterCreateCol",this.indexes[0],this.indexes[this.indexes.length-1],"UndoRedo.undo"),e.getPlugin("formulas")&&e.getPlugin("formulas").recalculateFull(),e.render()},f.UndoRedo.RemoveColumnAction.prototype.redo=function(e,t){e.addHookOnce("afterRemoveCol",t),e.alter("remove_col",this.index,this.amount,"UndoRedo.redo")},f.UndoRedo.CellAlignmentAction=function(e,t,n,o){this.stateBefore=e,this.range=t,this.type=n,this.alignment=o},f.UndoRedo.CellAlignmentAction.prototype.undo=function(e,t){if(e.getPlugin("contextMenu").isEnabled()){for(var n=this.range.from.row;n<=this.range.to.row;n++)for(var o=this.range.from.col;o<=this.range.to.col;o++)e.setCellMeta(n,o,"className",this.stateBefore[n][o]||" htLeft");e.addHookOnce("afterRender",t),e.render()}},f.UndoRedo.CellAlignmentAction.prototype.redo=function(e,t){e.getPlugin("contextMenu").isEnabled()&&(e.selectCell(this.range.from.row,this.range.from.col,this.range.to.row,this.range.to.col),e.getPlugin("contextMenu").executeCommand("alignment:"+this.alignment.replace("ht","").toLowerCase()),e.addHookOnce("afterRender",t),e.render())},f.UndoRedo.FiltersAction=function(e){this.formulaStacks=e,this.actionType="filter"},w(f.UndoRedo.FiltersAction,f.UndoRedo.Action),f.UndoRedo.FiltersAction.prototype.undo=function(e,t){var n=e.getPlugin("filters");e.addHookOnce("afterRender",t),n.formulaCollection.importAllFormulas(this.formulaStacks.slice(0,this.formulaStacks.length-1)),n.filter()},f.UndoRedo.FiltersAction.prototype.redo=function(e,t){var n=e.getPlugin("filters");e.addHookOnce("afterRender",t),n.formulaCollection.importAllFormulas(this.formulaStacks),n.filter()},f.UndoRedo.RowMoveAction=function(e,t){this.rows=e.slice(),this.target=t},w(f.UndoRedo.RowMoveAction,f.UndoRedo.Action),f.UndoRedo.RowMoveAction.prototype.undo=function(e,t){var n=e.getPlugin("manualRowMove");e.addHookOnce("afterRender",t);for(var o=this.rows[0]<this.target?-1*this.rows.length:0,r=this.rows[0]>this.target?this.rows[0]+this.rows.length:this.rows[0],i=[],s=this.rows.length+o,a=o;a<s;a++)i.push(this.target+a);n.moveRows(i.slice(),r),e.render(),e.selection.setRangeStartOnly(new WalkontableCellCoords(this.rows[0],0)),e.selection.setRangeEnd(new WalkontableCellCoords(this.rows[this.rows.length-1],e.countCols()-1))},f.UndoRedo.RowMoveAction.prototype.redo=function(e,t){var n=e.getPlugin("manualRowMove");e.addHookOnce("afterRender",t),n.moveRows(this.rows.slice(),this.target),e.render();var o=this.rows[0]<this.target?this.target-this.rows.length:this.target;e.selection.setRangeStartOnly(new WalkontableCellCoords(o,0)),e.selection.setRangeEnd(new WalkontableCellCoords(o+this.rows.length-1,e.countCols()-1))},f.hooks.add("afterInit",o),f.hooks.add("afterUpdateSettings",o),f.hooks.register("beforeUndo"),f.hooks.register("afterUndo"),f.hooks.register("beforeRedo"),f.hooks.register("afterRedo")},{browser:24,"helpers/array":43,"helpers/dom/event":48,"helpers/number":52,"helpers/object":53}],117:[function(e,t,n){"use strict";function o(e,t){var n;c[e]=t,n=u(e)+"Renderer",l.renderers[n]=t,l[n]=t,"base"===e&&(l.renderers.cellDecorator=t)}function r(e){if("function"==typeof e)return e;if("string"!=typeof e)throw Error('Only strings and functions can be passed as "renderer" parameter');if(!(e in c))throw Error('No editor registered under name "'+e+'"');return c[e]}function i(e){return e in c}Object.defineProperties(n,{registerRenderer:{get:function(){return o}},getRenderer:{get:function(){return r}},hasRenderer:{get:function(){return i}},__esModule:{value:!0}});var s,a,l=(s=e("browser"),s&&s.__esModule&&s||{default:s}).default,u=(a=e("helpers/string"),a&&a.__esModule&&a||{default:a}).toUpperCaseFirst,c={};l.renderers=l.renderers||{},l.renderers.registerRenderer=o,l.renderers.getRenderer=r},{browser:24,"helpers/string":55}],118:[function(e,t,n){"use strict";function o(e,t,n,o,r,i,s){s.className&&(t.className?t.className=t.className+" "+s.className:t.className=s.className),s.readOnly&&a(t,s.readOnlyCellClassName),s.valid===!1&&s.invalidCellClassName?a(t,s.invalidCellClassName):l(t,s.invalidCellClassName),s.wordWrap===!1&&s.noWordWrapClassName&&a(t,s.noWordWrapClassName),!i&&s.placeholder&&a(t,s.placeholderCellClassName)}Object.defineProperties(n,{cellDecorator:{get:function(){return o}},__esModule:{value:!0}});var r,i,s=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),a=s.addClass,l=s.removeClass,u=(i=e("renderers"),i&&i.__esModule&&i||{default:i}).registerRenderer;u("base",o)},{"helpers/dom/element":47,renderers:117}],119:[function(e,t,n){"use strict";function o(e,t,n,o,r,i,s){var a=(g.cloneNode(!0),w.cloneNode(!0));if(s.allowHtml?f("html").apply(this,arguments):f("text").apply(this,arguments),t.appendChild(a),u(t,"htAutocomplete"),t.firstChild||t.appendChild(document.createTextNode(String.fromCharCode(160))),!e.acArrowListener){var l=d(e);e.acArrowListener=function(r){c(r.target,"htAutocompleteArrow")&&e.view.wt.getSetting("onCellDblClick",null,new m(n,o),t)},l.addEventListener(e.rootElement,"mousedown",e.acArrowListener),e.addHookOnce("afterDestroy",function(){l.destroy()})}}Object.defineProperties(n,{autocompleteRenderer:{get:function(){return o}},__esModule:{value:!0}});var r,i,s,a,l=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),u=l.addClass,c=l.hasClass,d=(l.empty,(i=e("eventManager"),i&&i.__esModule&&i||{default:i}).eventManager),h=(s=e("renderers"),s&&s.__esModule&&s||{default:s}),f=h.getRenderer,p=h.registerRenderer,m=(a=e("3rdparty/walkontable/src/cell/coords"),a&&a.__esModule&&a||{default:a}).WalkontableCellCoords,g=document.createElement("DIV");g.className="htAutocompleteWrapper";var w=document.createElement("DIV");w.className="htAutocompleteArrow",w.appendChild(document.createTextNode(String.fromCharCode(9660)));p("autocomplete",o)},{"3rdparty/walkontable/src/cell/coords":6,eventManager:42,"helpers/dom/element":47,renderers:117}],120:[function(e,t,n){"use strict";function o(e,t,n,o,a,l,u){function c(e){var t="SPACE|ENTER",n="DELETE|BACKSPACE",o=O(E,e.keyCode);o(t+"|"+n)&&!x(e)&&h(function(){k(e),e.preventDefault()}),o(t)&&d(),o(n)&&d(!0)}function d(){var t=void 0!==arguments[0]&&arguments[0],n=e.getSelectedRange();if(n){for(var o=n.getTopLeftCorner(),r=n.getBottomRightCorner(),i=[],s=o.row;s<=r.row;s+=1)for(var a=o.col;a<=r.col;a+=1){var l=e.getCellMeta(s,a);if("checkbox"!==l.type)return;if(l.readOnly!==!0){"undefined"==typeof l.checkedTemplate&&(l.checkedTemplate=!0),"undefined"==typeof l.uncheckedTemplate&&(l.uncheckedTemplate=!1);var u=e.getDataAtCell(s,a);t===!1?u===l.checkedTemplate?i.push([s,a,l.uncheckedTemplate]):[l.uncheckedTemplate,null,void 0].indexOf(u)!==-1&&i.push([s,a,l.checkedTemplate]):i.push([s,a,l.uncheckedTemplate])}}i.length>0&&e.setDataAtCell(i)}}function h(t){var n=e.getSelectedRange();if(n)for(var o=n.getTopLeftCorner(),r=n.getBottomRightCorner(),i=o.row;i<=r.row;i++)for(var s=o.col;s<=r.col;s++){var a=e.getCellMeta(i,s);if("checkbox"!==a.type)return;var l=e.getCell(i,s);if(null==l)t(i,s,a);else{var u=l.querySelectorAll("input[type=checkbox]");u.length>0&&!a.readOnly&&t(u)}}}M("base").apply(this,arguments);var f=(r(e),i()),p=u.label,m=!1;if("undefined"==typeof u.checkedTemplate&&(u.checkedTemplate=!0),"undefined"==typeof u.uncheckedTemplate&&(u.uncheckedTemplate=!1),y(t),l===u.checkedTemplate||C(l,u.checkedTemplate)?f.checked=!0:l===u.uncheckedTemplate||C(l,u.uncheckedTemplate)?f.checked=!1:null===l?b(f,"noValue"):(f.style.display="none",b(f,A),m=!0),f.setAttribute("data-row",n),f.setAttribute("data-col",o),!m&&p){var g="";p.value?g="function"==typeof p.value?p.value.call(this,n,o,a,l):p.value:p.property&&(g=e.getDataAtRowProp(n,p.property));var w=s(g);"before"===p.position?w.appendChild(f):w.insertBefore(f,w.firstChild),f=w}t.appendChild(f),m&&t.appendChild(document.createTextNode("#bad-value#")),D.has(e)||(D.set(e,!0),e.addHook("beforeKeyDown",c))}function r(e){var t=H.get(e);return t||(t=new _(e),t.addEventListener(e.rootElement,"click",function(t){return l(t,e)}),t.addEventListener(e.rootElement,"mouseup",function(t){return a(t,e)}),t.addEventListener(e.rootElement,"change",function(t){return u(t,e)}),H.set(e,t)),t}function i(){var e=document.createElement("input");return e.className="htCheckboxRendererInput",e.type="checkbox",e.setAttribute("autocomplete","off"),e.setAttribute("tabindex","-1"),e.cloneNode(!1)}function s(e){var t=document.createElement("label");return t.className="htCheckboxRendererLabel",t.appendChild(document.createTextNode(e)),t.cloneNode(!0)}function a(e,t){c(e.target)&&setTimeout(t.listen,10)}function l(e,t){if(!c(e.target))return!1;var n=parseInt(e.target.getAttribute("data-row"),10),o=parseInt(e.target.getAttribute("data-col"),10),r=t.getCellMeta(n,o);r.readOnly&&e.preventDefault()}function u(e,t){if(!c(e.target))return!1;var n=parseInt(e.target.getAttribute("data-row"),10),o=parseInt(e.target.getAttribute("data-col"),10),r=t.getCellMeta(n,o);if(!r.readOnly){var i=null;i=e.target.checked?void 0===r.checkedTemplate||r.checkedTemplate:void 0!==r.uncheckedTemplate&&r.uncheckedTemplate,t.setDataAtCell(n,o,i)}}function c(e){return"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}Object.defineProperties(n,{checkboxRenderer:{get:function(){return o}},__esModule:{value:!0}});var d,h,f,p,m,g,w,v=(d=e("helpers/dom/element"),d&&d.__esModule&&d||{default:d}),y=v.empty,b=v.addClass,C=(v.hasClass,(h=e("helpers/string"),h&&h.__esModule&&h||{default:h}).equalsIgnoreCase),_=(f=e("eventManager"),f&&f.__esModule&&f||{default:f}).EventManager,R=(p=e("renderers"),p&&p.__esModule&&p||{default:p}),M=R.getRenderer,S=R.registerRenderer,E=(m=e("helpers/unicode"),m&&m.__esModule&&m||{default:m}).isKey,O=(g=e("helpers/function"),g&&g.__esModule&&g||{default:g}).partial,T=(w=e("helpers/dom/event"),w&&w.__esModule&&w||{default:w}),k=T.stopImmediatePropagation,x=T.isImmediatePropagationStopped,D=new WeakMap,H=new WeakMap,A="htBadValue";S("checkbox",o)},{eventManager:42,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/function":50,"helpers/string":55,"helpers/unicode":56,renderers:117}],121:[function(e,t,n){"use strict";function o(e,t,n,o,r,i,a){l("base").apply(this,arguments),null!==i&&void 0!==i||(i=""),s(t,i)}Object.defineProperties(n,{htmlRenderer:{get:function(){return o}},__esModule:{value:!0}});var r,i,s=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}).fastInnerHTML,a=(i=e("renderers"),i&&i.__esModule&&i||{default:i}),l=a.getRenderer,u=a.registerRenderer;u("html",o)},{"helpers/dom/element":47,renderers:117}],122:[function(e,t,n){"use strict";function o(e,t,n,o,r,i,s){if(d(i)){"undefined"!=typeof s.language&&a.culture(s.language),i=a(i).format(s.format||"0");var l=s.className||"",c=l.length?l.split(" "):[];c.indexOf("htLeft")<0&&c.indexOf("htCenter")<0&&c.indexOf("htRight")<0&&c.indexOf("htJustify")<0&&c.push("htRight"),c.indexOf("htNumeric")<0&&c.push("htNumeric"),s.className=c.join(" ")}u("text")(e,t,n,o,r,i,s)}Object.defineProperties(n,{numericRenderer:{get:function(){return o}},__esModule:{value:!0}});var r,i,s,a=(r=e("numbro"),r&&r.__esModule&&r||{default:r}).default,l=(i=e("renderers"),i&&i.__esModule&&i||{default:i}),u=l.getRenderer,c=l.registerRenderer,d=(s=e("helpers/number"),s&&s.__esModule&&s||{default:s}).isNumeric;c("numeric",o)},{"helpers/number":52,numbro:"numbro",renderers:117}],123:[function(e,t,n){"use strict";function o(e,t,n,o,r,i,a){l("text").apply(this,arguments),i=t.innerHTML;var u,c=a.hashLength||i.length,d=a.hashSymbol||"*";for(u="";u.split(d).length-1<c;u+=d);s(t,u)}Object.defineProperties(n,{passwordRenderer:{get:function(){return o}},__esModule:{value:!0}});var r,i,s=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}).fastInnerHTML,a=(i=e("renderers"),i&&i.__esModule&&i||{default:i}),l=a.getRenderer,u=a.registerRenderer;u("password",o)},{"helpers/dom/element":47,renderers:117}],124:[function(e,t,n){"use strict";function o(e,t,n,o,r,i,s){h("base").apply(this,arguments),!i&&s.placeholder&&(i=s.placeholder);var a=c(i);if(e.getSettings().trimWhitespace||(a=a.replace(/ /g,String.fromCharCode(160))),s.rendererTemplate){l(t);var d=document.createElement("TEMPLATE");d.setAttribute("bind","{{}}"),d.innerHTML=s.rendererTemplate,HTMLTemplateElement.decorate(d),d.model=e.getSourceDataAtRow(n),t.appendChild(d)}else u(t,a)}Object.defineProperties(n,{textRenderer:{get:function(){return o}},__esModule:{value:!0}});var r,i,s,a=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),l=a.empty,u=a.fastInnerText,c=(i=e("helpers/mixed"),i&&i.__esModule&&i||{default:i}).stringify,d=(s=e("renderers"),s&&s.__esModule&&s||{default:s}),h=d.getRenderer,f=d.registerRenderer;f("text",o)},{"helpers/dom/element":47,"helpers/mixed":51,renderers:117}],125:[function(e,t,n){!function(e){"use strict";function t(e){return{configurable:!0,enumerable:!1,value:e,writable:!0}}function n(){return"__$"+Math.floor(1e9*Math.random())+"$"+ ++H+"$__"}function o(e){return I[e]}function r(){var e=n();return I[e]=!0,e}function i(e){return"object"==typeof e&&e instanceof l}function s(e){return i(e)?"symbol":typeof e}function a(e){var t=new l(e);if(!(this instanceof a))return t;throw new TypeError("Symbol cannot be new'ed")}function l(e){var t=n();S(this,N,{value:this}),S(this,A,{value:t}),S(this,P,{value:e}),c(this),L[t]=this}function u(e){var t=e[W];return t&&t.self===e?t:x(e)?(V.hash.value=B++,V.self.value=e,j.value=R(null,V),S(e,W,j),j.value):void 0}function c(e){return u(e),E.apply(this,arguments)}function d(e){return L[e]||I[e]}function h(e){return i(e)?e[A]:e}function f(e){for(var t=[],n=T(e),o=0;o<n.length;o++){var r=L[n[o]];r&&t.push(r)}return t}function p(t){return e.traceur&&e.traceur.options[t]}function m(e){for(var t=1;t<arguments.length;t++)for(var n=T(arguments[t]),o=0;o<n.length;o++){var r=n[o];d(r)||!function(t,n){S(e,n,{get:function(){return t[n]},enumerable:!0})}(arguments[t],n[o])}return e}function g(e){return null!=e&&("object"==typeof e||"function"==typeof e)}function w(e){if(null==e)throw _();return C(e)}function v(e){if(null==e)throw new TypeError("Value cannot be converted to an Object");return e}function y(e,t){e.Symbol||(e.Symbol=t,Object.getOwnPropertySymbols=f),e.Symbol.iterator||(e.Symbol.iterator=t("Symbol.iterator"))}function b(e){y(e,a),e.Reflect=e.Reflect||{},e.Reflect.global=e.Reflect.global||e}if(!e.$traceurRuntime){var C=Object,_=TypeError,R=C.create,M=C.defineProperties,S=C.defineProperty,E=C.freeze,O=C.getOwnPropertyDescriptor,T=C.getOwnPropertyNames,k=C.keys,x=Object.isExtensible,D=t,H=0,A=n(),P=n(),N=n(),L=R(null),I=R(null);S(a.prototype,"constructor",t(a)),S(a.prototype,"toString",D(function(){var e=this[N];if(!p("symbols"))return e[A];if(!e)throw TypeError("Conversion from symbol to string");var t=e[P];return void 0===t&&(t=""),"Symbol("+t+")"})),S(a.prototype,"valueOf",D(function(){var e=this[N];if(!e)throw TypeError("Conversion from symbol to string");return p("symbols")?e:e[A]})),S(l.prototype,"constructor",t(a)),S(l.prototype,"toString",{value:a.prototype.toString,enumerable:!1}),S(l.prototype,"valueOf",{value:a.prototype.valueOf,enumerable:!1});var W=r(),j={value:void 0},V={hash:{value:void 0},self:{value:void 0}},B=0;c(l.prototype),b(e),e.$traceurRuntime={checkObjectCoercible:v,createPrivateName:r,defineProperties:M,defineProperty:S,exportStar:m,getOwnHashObject:u,getOwnPropertyDescriptor:O,getOwnPropertyNames:T,isObject:g,isPrivateName:o,isSymbolString:d,keys:k,setupGlobals:b,toObject:w,toProperty:h,typeof:s}}}(window),function(){"use strict";function e(){for(var e,n=[],o=0,r=0;r<arguments.length;r++){var i=$traceurRuntime.checkObjectCoercible(arguments[r]);"function"!=typeof i[t(Symbol.iterator)]&&(i[t(Symbol.iterator)]=function(){var e=this,t=e.length,n=0;return{next:function(){var o={done:!0};return n<t&&(o.done=!1,o.value=e[n],++n),o}}});for(var s=i[t(Symbol.iterator)]();!(e=s.next()).done;)n[o++]=e.value}return n}var t=$traceurRuntime.toProperty;$traceurRuntime.spread=e}(),function(){"use strict";function e(e,t){var n=m(e);do{var o=p(n,t);if(o)return o;n=m(n)}while(n)}function t(e){return e.__proto__}function n(e,t,n,r){return o(e,t,n).apply(e,r)}function o(t,n,o){var r=e(n,o);if(r)return r.get?r.get.call(t):r.value}function r(t,n,o,r){var i=e(n,o);if(i&&i.set)return i.set.call(t,r),r;throw c("super has no setter '"+o+"'.")}function i(e){for(var t={},n=v(e),o=0;o<n.length;o++){var r=n[o];t[r]=p(e,r)}for(var i=y(e),o=0;o<i.length;o++){var s=i[o];t[g(s)]=p(e,g(s))}return t}function s(e,t,n,o){return f(t,"constructor",{value:e,configurable:!0,enumerable:!1,writable:!0}),arguments.length>3?("function"==typeof o&&(e.__proto__=o),e.prototype=d(a(o),i(t))):e.prototype=t,f(e,"prototype",{configurable:!1,writable:!1}),h(e,i(n))}function a(e){if("function"==typeof e){var t=e.prototype;if(u(t)===t||null===t)return e.prototype;throw new c("super prototype must be an Object or null")}if(null===e)return null;throw new c("Super expression must either be null or a function, not "+typeof e+".")}function l(e,t,o){null!==m(t)&&n(e,t,"constructor",o)}var u=Object,c=TypeError,d=u.create,h=$traceurRuntime.defineProperties,f=$traceurRuntime.defineProperty,p=$traceurRuntime.getOwnPropertyDescriptor,m=Object.getPrototypeOf,g=$traceurRuntime.toProperty,w=Object,v=w.getOwnPropertyNames,y=w.getOwnPropertySymbols;$traceurRuntime.createClass=s,$traceurRuntime.defaultSuperCall=l,$traceurRuntime.superCall=n,$traceurRuntime.superConstructor=t,$traceurRuntime.superGet=o,$traceurRuntime.superSet=r}()},{}],126:[function(e,t,n){"use strict";function o(e){var t=this,n=this;this.eventManager=M(e),this.instance=e,this.settings=e.getSettings(),this.selectionMouseDown=!1;var o=e.rootElement.getAttribute("style");o&&e.rootElement.setAttribute("data-originalstyle",o),p(e.rootElement,"handsontable");var r=document.createElement("TABLE");p(r,"htCore"),e.getSettings().tableClassName&&p(r,e.getSettings().tableClassName),this.THEAD=document.createElement("THEAD"),r.appendChild(this.THEAD),this.TBODY=document.createElement("TBODY"),r.appendChild(this.TBODY),e.table=r,e.container.insertBefore(r,e.container.firstChild),this.eventManager.addEventListener(e.rootElement,"mousedown",function(e){this.selectionMouseDown=!0,n.isTextSelectionAllowed(e.target)||(s(),e.preventDefault(),window.focus())}),this.eventManager.addEventListener(e.rootElement,"mouseup",function(e){this.selectionMouseDown=!1}),this.eventManager.addEventListener(e.rootElement,"mousemove",function(e){this.selectionMouseDown&&!n.isTextSelectionAllowed(e.target)&&(s(),e.preventDefault())}),this.eventManager.addEventListener(document.documentElement,"keyup",function(t){e.selection.isInProgress()&&!t.shiftKey&&e.selection.finish()});var i;this.isMouseDown=function(){return i},this.eventManager.addEventListener(document.documentElement,"mouseup",function(t){e.selection.isInProgress()&&1===t.which&&e.selection.finish(),i=!1,_(document.activeElement)&&e.unlisten()}),this.eventManager.addEventListener(document.documentElement,"mousedown",function(t){var o=t.target,r=t.target,s=t.x||t.clientX,a=t.y||t.clientY;if(!i&&e.rootElement){if(r===e.view.wt.wtTable.holder){var l=v();if(document.elementFromPoint(s+l,a)!==e.view.wt.wtTable.holder||document.elementFromPoint(s,a+l)!==e.view.wt.wtTable.holder)return}else for(;r!==document.documentElement;){if(null===r){if(t.isTargetWebComponent)break;return}if(r===e.rootElement)return;r=r.parentNode}var u="function"==typeof n.settings.outsideClickDeselects?n.settings.outsideClickDeselects(o):n.settings.outsideClickDeselects;u?e.deselectCell():e.destroyEditor()}}),this.eventManager.addEventListener(r,"selectstart",function(e){n.settings.fragmentSelection||C(e.target)||e.preventDefault()});var s=function(){window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty()},a=[new D({className:"current",border:{width:2,color:"#5292F7",cornerVisible:function(){return n.settings.fillHandle&&!n.isCellEdited()&&!e.selection.isMultiple()},multipleSelectionHandlesVisible:function(){return!n.isCellEdited()&&!e.selection.isMultiple()}}}),new D({className:"area",border:{width:1,color:"#89AFF9",cornerVisible:function(){return n.settings.fillHandle&&!n.isCellEdited()&&e.selection.isMultiple()},multipleSelectionHandlesVisible:function(){return!n.isCellEdited()&&e.selection.isMultiple()}}}),new D({className:"highlight",highlightHeaderClassName:n.settings.currentHeaderClassName,highlightRowClassName:n.settings.currentRowClassName,highlightColumnClassName:n.settings.currentColClassName}),new D({className:"fill",border:{width:1,color:"red"}})];a.current=a[0],a.area=a[1],a.highlight=a[2],a.fill=a[3];var l={debug:function(){return n.settings.debug},externalRowCalculator:this.instance.getPlugin("autoRowSize")&&this.instance.getPlugin("autoRowSize").isEnabled(),table:r,preventOverflow:function(){return t.settings.preventOverflow},stretchH:function(){return n.settings.stretchH},data:e.getDataAtCell,totalRows:function(){return e.countRows()},totalColumns:function(){return e.countCols()},fixedColumnsLeft:function(){return n.settings.fixedColumnsLeft},fixedRowsTop:function(){return n.settings.fixedRowsTop},fixedRowsBottom:function(){return n.settings.fixedRowsBottom},minSpareRows:function(){return n.settings.minSpareRows},renderAllRows:n.settings.renderAllRows,rowHeaders:function(){var t=[];return e.hasRowHeaders()&&t.push(function(e,t){n.appendRowHeader(e,t)}),h.hooks.run(e,"afterGetRowHeaderRenderers",t),t},columnHeaders:function(){var t=[];return e.hasColHeaders()&&t.push(function(e,t){n.appendColHeader(e,t)}),h.hooks.run(e,"afterGetColumnHeaderRenderers",t),t},columnWidth:e.getColWidth,rowHeight:e.getRowHeight,cellRenderer:function(e,t,o){var r=n.instance.getCellMeta(e,t),i=n.instance.colToProp(t),s=n.instance.getDataAtRowProp(e,i);n.instance.hasHook("beforeValueRender")&&(s=n.instance.runHooks("beforeValueRender",s)),n.instance.runHooks("beforeRenderer",o,e,t,i,s,r),n.instance.getCellRenderer(r)(n.instance,o,e,t,i,s,r),n.instance.runHooks("afterRenderer",o,e,t,i,s,r)},selections:a,hideBorderOnMouseDownOver:function(){return n.settings.fragmentSelection},onCellMouseDown:function(t,o,r,s){var a={row:!1,column:!1,cells:!1};if(e.listen(),n.activeWt=s,i=!0,h.hooks.run(e,"beforeOnCellMouseDown",t,o,r,a),!O(t)){var l=e.getSelectedRange(),u=e.selection,c=u.selectedHeader;if(t.shiftKey&&l)o.row>=0&&o.col>=0&&!a.cells?(u.setSelectedHeaders(!1,!1),u.setRangeEnd(o)):(c.cols||c.rows)&&o.row>=0&&o.col>=0&&!a.cells?(u.setSelectedHeaders(!1,!1),u.setRangeEnd(new x(o.row,o.col))):c.cols&&o.row<0&&!a.column?u.setRangeEnd(new x(l.to.row,o.col)):c.rows&&o.col<0&&!a.row?u.setRangeEnd(new x(o.row,l.to.col)):(!c.cols&&!c.rows&&o.col<0||c.cols&&o.col<0)&&!a.row?(u.setSelectedHeaders(!0,!1),u.setRangeStartOnly(new x(l.from.row,0)),u.setRangeEnd(new x(o.row,e.countCols()-1))):(!c.cols&&!c.rows&&o.row<0||c.rows&&o.row<0)&&!a.column&&(u.setSelectedHeaders(!1,!0),u.setRangeStartOnly(new x(0,l.from.col)),u.setRangeEnd(new x(e.countRows()-1,o.col)));else{var d=!0;if(l){var f=l,m=f.from,g=f.to,w=!u.inInSelection(o);if(o.row<0&&c.cols){var v=Math.min(m.col,g.col),y=Math.max(m.col,g.col);d=o.col<v||o.col>y}else if(o.col<0&&c.rows){var b=Math.min(m.row,g.row),C=Math.max(m.row,g.row);d=o.row<b||o.row>C}else d=w}var _=T(t),M=k(t)||"touchstart"===t.type;o.row<0&&o.col>=0&&!a.column?(u.setSelectedHeaders(!1,!0),(M||_&&d)&&(u.setRangeStartOnly(new x(0,o.col)),u.setRangeEnd(new x(Math.max(e.countRows()-1,0),o.col),!1))):o.col<0&&o.row>=0&&!a.row?(u.setSelectedHeaders(!0,!1),(M||_&&d)&&(u.setRangeStartOnly(new x(o.row,0)),u.setRangeEnd(new x(o.row,Math.max(e.countCols()-1,0)),!1))):o.col>=0&&o.row>=0&&!a.cells?(M||_&&d)&&(u.setSelectedHeaders(!1,!1),u.setRangeStart(o)):o.col<0&&o.row<0&&(o.row=0,o.col=0,u.setSelectedHeaders(!1,!1,!0),u.setRangeStart(o))}u.selectedHeader.rows?(R(e.rootElement,"ht__selection--columns"),p(e.rootElement,"ht__selection--rows")):u.selectedHeader.cols?(R(e.rootElement,"ht__selection--rows"),p(e.rootElement,"ht__selection--columns")):R(e.rootElement,["ht__selection--rows","ht__selection--columns"]),h.hooks.run(e,"afterOnCellMouseDown",t,o,r),n.activeWt=n.wt}},onCellMouseOver:function(t,o,r,s){var a={row:!1,column:!1,cell:!1};n.activeWt=s,h.hooks.run(e,"beforeOnCellMouseOver",t,o,r,a),O(t)||(0===t.button&&i&&(o.row>=0&&o.col>=0?e.selection.selectedHeader.cols&&!a.column?e.selection.setRangeEnd(new x(e.countRows()-1,o.col),!1):e.selection.selectedHeader.rows&&!a.row?e.selection.setRangeEnd(new x(o.row,e.countCols()-1),!1):a.cell||e.selection.setRangeEnd(o):e.selection.selectedHeader.cols&&!a.column?e.selection.setRangeEnd(new x(e.countRows()-1,o.col),!1):e.selection.selectedHeader.rows&&!a.row?e.selection.setRangeEnd(new x(o.row,e.countCols()-1),!1):a.cell||e.selection.setRangeEnd(o)),h.hooks.run(e,"afterOnCellMouseOver",t,o,r),n.activeWt=n.wt)},onCellMouseUp:function(t,o,r,i){n.activeWt=i,h.hooks.run(e,"beforeOnCellMouseUp",t,o,r),h.hooks.run(e,"afterOnCellMouseUp",t,o,r),n.activeWt=n.wt},onCellCornerMouseDown:function(t){t.preventDefault(),h.hooks.run(e,"afterOnCellCornerMouseDown",t)},onCellCornerDblClick:function(t){t.preventDefault(),h.hooks.run(e,"afterOnCellCornerDblClick",t)},beforeDraw:function(e,t){n.beforeRender(e,t)},onDraw:function(e){n.onDraw(e)},onScrollVertically:function(){e.runHooks("afterScrollVertically")},onScrollHorizontally:function(){e.runHooks("afterScrollHorizontally")},onBeforeDrawBorders:function(t,n){e.runHooks("beforeDrawBorders",t,n)},onBeforeTouchScroll:function(){e.runHooks("beforeTouchScroll")},onAfterMomentumScroll:function(){e.runHooks("afterMomentumScroll")},onBeforeStretchingColumnWidth:function(t,n){return e.runHooks("beforeStretchingColumnWidth",t,n)},onModifyRowHeaderWidth:function(t){return e.runHooks("modifyRowHeaderWidth",t)},viewportRowCalculatorOverride:function(t){var o=e.countRows(),r=n.settings.viewportRowRenderingOffset;if("auto"===r&&n.settings.fixedRowsTop&&(r=10),"number"==typeof r&&(t.startRow=Math.max(t.startRow-r,0),t.endRow=Math.min(t.endRow+r,o-1)),"auto"===r){var i=t.startRow+t.endRow-t.startRow,s=Math.ceil(i/o*12);t.startRow=Math.max(t.startRow-s,0),t.endRow=Math.min(t.endRow+s,o-1)}e.runHooks("afterViewportRowCalculatorOverride",t)},viewportColumnCalculatorOverride:function(t){var o=e.countCols(),r=n.settings.viewportColumnRenderingOffset;if("auto"===r&&n.settings.fixedColumnsLeft&&(r=10),"number"==typeof r&&(t.startColumn=Math.max(t.startColumn-r,0),t.endColumn=Math.min(t.endColumn+r,o-1)),"auto"===r){var i=t.startColumn+t.endColumn-t.startColumn,s=Math.ceil(i/o*12);t.startRow=Math.max(t.startColumn-s,0),t.endColumn=Math.min(t.endColumn+s,o-1)}e.runHooks("afterViewportColumnCalculatorOverride",t)},rowHeaderWidth:function(){return n.settings.rowHeaderWidth},columnHeaderHeight:function(){var t=e.runHooks("modifyColumnHeaderHeight");return n.settings.columnHeaderHeight||t}};h.hooks.run(e,"beforeInitWalkontable",l),this.wt=new H(l),this.activeWt=this.wt,this.eventManager.addEventListener(n.wt.wtTable.spreader,"mousedown",function(e){e.target===n.wt.wtTable.spreader&&3===e.which&&E(e)}),this.eventManager.addEventListener(n.wt.wtTable.spreader,"contextmenu",function(e){e.target===n.wt.wtTable.spreader&&3===e.which&&E(e)}),this.eventManager.addEventListener(document.documentElement,"click",function(){n.settings.observeDOMVisibility&&n.wt.drawInterrupted&&(n.instance.forceFullRender=!0,n.render())})}Object.defineProperties(n,{TableView:{get:function(){return o}},__esModule:{value:!0}});var r,i,s,a,l,u,c,d,h=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,f=(i=e("helpers/dom/element"),i&&i.__esModule&&i||{default:i}),p=f.addClass,m=f.empty,g=f.fastInnerHTML,w=f.fastInnerText,v=f.getScrollbarWidth,y=f.hasClass,b=f.isChildOf,C=f.isInput,_=f.isOutsideInput,R=f.removeClass,M=((s=e("helpers/object"),s&&s.__esModule&&s||{default:s}).createObjectPropListener,(a=e("eventManager"),a&&a.__esModule&&a||{default:a}).eventManager),S=(l=e("helpers/dom/event"),l&&l.__esModule&&l||{default:l}),E=S.stopPropagation,O=S.isImmediatePropagationStopped,T=S.isRightClick,k=S.isLeftClick,x=(u=e("3rdparty/walkontable/src/cell/coords"),u&&u.__esModule&&u||{default:u}).WalkontableCellCoords,D=(c=e("3rdparty/walkontable/src/selection"),c&&c.__esModule&&c||{default:c}).WalkontableSelection,H=(d=e("3rdparty/walkontable/src/core"),d&&d.__esModule&&d||{default:d}).Walkontable;h.TableView=o,o.prototype.isTextSelectionAllowed=function(e){if(C(e))return!0;var t=b(e,this.instance.view.wt.wtTable.spreader);return!(this.settings.fragmentSelection!==!0||!t)||(!("cell"!==this.settings.fragmentSelection||!this.isSelectedOnlyCell()||!t)||!(this.settings.fragmentSelection||!this.isCellEdited()||!this.isSelectedOnlyCell()))},o.prototype.isSelectedOnlyCell=function(){var e=this.instance.getSelected()||[],t=e[0],n=e[1],o=e[2],r=e[3];return void 0!==t&&t===o&&n===r},o.prototype.isCellEdited=function(){var e=this.instance.getActiveEditor();return e&&e.isOpened()},o.prototype.beforeRender=function(e,t){e&&h.hooks.run(this.instance,"beforeRender",this.instance.forceFullRender,t)},o.prototype.onDraw=function(e){e&&h.hooks.run(this.instance,"afterRender",this.instance.forceFullRender)},o.prototype.render=function(){this.wt.draw(!this.instance.forceFullRender),this.instance.forceFullRender=!1,this.instance.renderCall=!1},o.prototype.getCellAtCoords=function(e,t){var n=this.wt.getCell(e,t);return n<0?null:n},o.prototype.scrollViewport=function(e){this.wt.scrollViewport(e)},o.prototype.appendRowHeader=function(e,t){if(t.firstChild){var n=t.firstChild;if(!y(n,"relative"))return m(t),void this.appendRowHeader(e,t);this.updateCellHeader(n.querySelector(".rowHeader"),e,this.instance.getRowHeader)}else{var o=document.createElement("div"),r=document.createElement("span");o.className="relative",r.className="rowHeader",this.updateCellHeader(r,e,this.instance.getRowHeader),o.appendChild(r),t.appendChild(o)}h.hooks.run(this.instance,"afterGetRowHeader",e,t)},o.prototype.appendColHeader=function(e,t){if(t.firstChild){var n=t.firstChild;y(n,"relative")?this.updateCellHeader(n.querySelector(".colHeader"),e,this.instance.getColHeader):(m(t),this.appendColHeader(e,t))}else{var o=document.createElement("div"),r=document.createElement("span");o.className="relative",r.className="colHeader",this.updateCellHeader(r,e,this.instance.getColHeader),o.appendChild(r),
t.appendChild(o)}h.hooks.run(this.instance,"afterGetColHeader",e,t)},o.prototype.updateCellHeader=function(e,t,n){var o=t,r=this.wt.wtOverlays.getParentOverlay(e)||this.wt;e.parentNode&&(y(e,"colHeader")?o=r.wtTable.columnFilter.sourceToRendered(t):y(e,"rowHeader")&&(o=r.wtTable.rowFilter.sourceToRendered(t))),o>-1?g(e,n(t)):(w(e,String.fromCharCode(160)),p(e,"cornerHeader"))},o.prototype.maximumVisibleElementWidth=function(e){var t=this.wt.wtViewport.getWorkspaceWidth(),n=t-e;return n>0?n:0},o.prototype.maximumVisibleElementHeight=function(e){var t=this.wt.wtViewport.getWorkspaceHeight(),n=t-e;return n>0?n:0},o.prototype.mainViewIsActive=function(){return this.wt===this.activeWt},o.prototype.destroy=function(){this.wt.destroy(),this.eventManager.destroy()}},{"3rdparty/walkontable/src/cell/coords":6,"3rdparty/walkontable/src/core":8,"3rdparty/walkontable/src/selection":19,browser:24,eventManager:42,"helpers/dom/element":47,"helpers/dom/event":48,"helpers/object":53}],127:[function(e,t,n){"use strict";Object.defineProperties(n,{NodeStructure:{get:function(){return i}},LinkedList:{get:function(){return s}},__esModule:{value:!0}});var o,r=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,i=function(e){this.data=e,this.next=null,this.prev=null};$traceurRuntime.createClass(i,{},{});var s=function(){this.first=null,this.last=null};$traceurRuntime.createClass(s,{push:function(e){var t=new i(e);if(null===this.first)this.first=this.last=t;else{var n=this.last;this.last=t,t.prev=n,n.next=t}},unshift:function(e){var t=new i(e);if(null===this.first)this.first=this.last=t;else{var n=this.first;this.first=t,t.next=n,n.prev=t}},inorder:function(e){for(var t=this.first;t;)e(t),t=t.next},remove:function(e){if(null===this.first)return!1;for(var t,n,o=this.first;o;){if(o.data===e)return t=o.next,n=o.prev,t&&(t.prev=n),n&&(n.next=t),o===this.first&&(this.first=t),o===this.last&&(this.last=n),!0;o=o.next}return!1},hasCycle:function(){for(var e=this.first,t=this.first;;){if(null===e)return!1;if(e=e.next,null===e)return!1;if(e=e.next,t=t.next,e===t)return!0}},pop:function(){if(null===this.last)return null;var e=this.last;return this.last=this.last.prev,e},shift:function(){if(null===this.first)return null;var e=this.first;return this.first=this.first.next,e},recursiveReverse:function(){function e(t,n){n&&(e(n,n.next),n.next=t)}if(this.first){e(this.first,this.first.next),this.first.next=null;var t=this.first;this.first=this.last,this.last=t}},reverse:function(){if(this.first&&this.first.next){for(var e,t=this.first.next,n=this.first;t;)e=t.next,t.next=n,n.prev=t,n=t,t=e;this.first.next=null,this.last.prev=null,e=this.first,this.first=n,this.last=e}}},{}),r.utils.NodeStructure=i,r.utils.LinkedList=s},{browser:24}],128:[function(e,t,n){"use strict";Object.defineProperties(n,{GhostTable:{get:function(){return m}},__esModule:{value:!0}});var o,r,i,s,a,l,u=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,c=(r=e("helpers/dom/element"),r&&r.__esModule&&r||{default:r}),d=c.addClass,h=c.outerHeight,f=c.outerWidth,p=(i=e("helpers/array"),i&&i.__esModule&&i||{default:i}).arrayEach,m=((s=e("helpers/object"),s&&s.__esModule&&s||{default:s}).objectEach,(a=e("helpers/number"),a&&a.__esModule&&a||{default:a}).rangeEach,(l=e("helpers/mixed"),l&&l.__esModule&&l||{default:l}).stringify,function(e){this.hot=e,this.container=null,this.injected=!1,this.rows=[],this.columns=[],this.samples=null,this.settings={useHeaders:!0}});$traceurRuntime.createClass(m,{addRow:function(e,t){if(this.columns.length)throw new Error("Doesn't support multi-dimensional table");this.rows.length||(this.container=this.createContainer(this.hot.rootElement.className));var n={row:e};this.rows.push(n),this.samples=t,this.table=this.createTable(this.hot.table.className),this.table.colGroup.appendChild(this.createColGroupsCol()),this.table.tr.appendChild(this.createRow(e)),this.container.container.appendChild(this.table.fragment),n.table=this.table.table},addColumnHeadersRow:function(e){if(null!=this.hot.getColHeader(0)){var t={row:-1};this.rows.push(t),this.container=this.createContainer(this.hot.rootElement.className),this.samples=e,this.table=this.createTable(this.hot.table.className),this.table.colGroup.appendChild(this.createColGroupsCol()),this.table.tHead.appendChild(this.createColumnHeadersRow()),this.container.container.appendChild(this.table.fragment),t.table=this.table.table}},addColumn:function(e,t){if(this.rows.length)throw new Error("Doesn't support multi-dimensional table");this.columns.length||(this.container=this.createContainer(this.hot.rootElement.className));var n={col:e};this.columns.push(n),this.samples=t,this.table=this.createTable(this.hot.table.className),this.getSetting("useHeaders")&&null!==this.hot.getColHeader(e)&&this.hot.view.appendColHeader(e,this.table.th),this.table.tBody.appendChild(this.createCol(e)),this.container.container.appendChild(this.table.fragment),n.table=this.table.table},getHeights:function(e){this.injected||this.injectTable(),p(this.rows,function(t){e(t.row,h(t.table)-1)})},getWidths:function(e){this.injected||this.injectTable(),p(this.columns,function(t){e(t.col,f(t.table))})},setSettings:function(e){this.settings=e},setSetting:function(e,t){this.settings||(this.settings={}),this.settings[e]=t},getSettings:function(){return this.settings},getSetting:function(e){return this.settings?this.settings[e]:null},createColGroupsCol:function(){var e=this,t=document,n=t.createDocumentFragment();return this.hot.hasRowHeaders()&&n.appendChild(this.createColElement(-1)),this.samples.forEach(function(t){p(t.strings,function(t){n.appendChild(e.createColElement(t.col))})}),n},createRow:function(e){var t=this,n=document,o=n.createDocumentFragment(),r=n.createElement("th");return this.hot.hasRowHeaders()&&(this.hot.view.appendRowHeader(e,r),o.appendChild(r)),this.samples.forEach(function(r){p(r.strings,function(r){var i=r.col,s=t.hot.getCellMeta(e,i);s.col=i,s.row=e;var a=t.hot.getCellRenderer(s),l=n.createElement("td");a(t.hot,l,e,i,t.hot.colToProp(i),r.value,s),o.appendChild(l)})}),o},createColumnHeadersRow:function(){var e=this,t=document,n=t.createDocumentFragment();if(this.hot.hasRowHeaders()){var o=t.createElement("th");this.hot.view.appendColHeader(-1,o),n.appendChild(o)}return this.samples.forEach(function(o){p(o.strings,function(o){var r=o.col,i=t.createElement("th");e.hot.view.appendColHeader(r,i),n.appendChild(i)})}),n},createCol:function(e){var t=this,n=document,o=n.createDocumentFragment();return this.samples.forEach(function(r){p(r.strings,function(r){var i=r.row,s=t.hot.getCellMeta(i,e);s.col=e,s.row=i;var a=t.hot.getCellRenderer(s),l=n.createElement("td"),u=n.createElement("tr");a(t.hot,l,i,e,t.hot.colToProp(e),r.value,s),u.appendChild(l),o.appendChild(u)})}),o},clean:function(){this.rows.length=0,this.rows[-1]=void 0,this.columns.length=0,this.samples&&this.samples.clear(),this.samples=null,this.removeTable()},injectTable:function(){var e=void 0!==arguments[0]?arguments[0]:null;this.injected||((e||this.hot.rootElement).appendChild(this.container.fragment),this.injected=!0)},removeTable:function(){this.injected&&this.container.container.parentNode&&(this.container.container.parentNode.removeChild(this.container.container),this.container=null,this.injected=!1)},createColElement:function(e){var t=document,n=t.createElement("col");return n.style.width=this.hot.view.wt.wtTable.getStretchedColumnWidth(e)+"px",n},createTable:function(){var e=void 0!==arguments[0]?arguments[0]:"",t=document,n=t.createDocumentFragment(),o=t.createElement("table"),r=t.createElement("thead"),i=t.createElement("tbody"),s=t.createElement("colgroup"),a=t.createElement("tr"),l=t.createElement("th");return this.isVertical()&&o.appendChild(s),this.isHorizontal()&&(a.appendChild(l),r.appendChild(a),o.style.tableLayout="auto",o.style.width="auto"),o.appendChild(r),this.isVertical()&&i.appendChild(a),o.appendChild(i),d(o,e),n.appendChild(o),{fragment:n,table:o,tHead:r,tBody:i,colGroup:s,tr:a,th:l}},createContainer:function(){var e=void 0!==arguments[0]?arguments[0]:"",t=document,n=t.createDocumentFragment(),o=t.createElement("div");return e="htGhostTable htAutoSize "+e.trim(),d(o,e),n.appendChild(o),{fragment:n,container:o}},isVertical:function(){return!(!this.rows.length||this.columns.length)},isHorizontal:function(){return!(!this.columns.length||this.rows.length)}},{}),u.utils.GhostTable=m},{browser:24,"helpers/array":43,"helpers/dom/element":47,"helpers/mixed":51,"helpers/number":52,"helpers/object":53}],129:[function(e,t,n){"use strict";function o(e){return"string"==typeof e&&/fps$/.test(e)&&(e=1e3/parseInt(e.replace("fps","")||0,10)),e}Object.defineProperties(n,{Interval:{get:function(){return c}},__esModule:{value:!0}});var r,i,s=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,a=(i=e("helpers/feature"),i&&i.__esModule&&i||{default:i}),l=a.requestAnimationFrame,u=a.cancelAnimationFrame,c=function(e,t){var n=this;this.timer=null,this.func=e,this.delay=o(t),this.stopped=!0,this._then=null,this._callback=function(){return n.__callback()}},d=c;$traceurRuntime.createClass(c,{start:function(){return this.stopped&&(this._then=Date.now(),this.stopped=!1,this.timer=l(this._callback)),this},stop:function(){return this.stopped||(this.stopped=!0,u(this.timer),this.timer=null),this},__callback:function(){if(this.timer=l(this._callback),this.delay){var e=Date.now(),t=e-this._then;t>this.delay&&(this._then=e-t%this.delay,this.func())}else this.func()}},{create:function(e,t){return new d(e,t)}}),s.utils.Interval=c},{browser:24,"helpers/feature":49}],130:[function(e,t,n){"use strict";function o(e,t){c.set(e,t)}function r(e){var t;if(!(e instanceof a.Core)){if(!c.has(e))throw Error("Record translator was not registered for this object identity");e=c.get(e)}return d.has(e)?t=d.get(e):(t=new u(e),d.set(e,t)),t}Object.defineProperties(n,{registerIdentity:{get:function(){return o}},getTranslator:{get:function(){return r}},__esModule:{value:!0}});var i,s,a=(i=e("browser"),i&&i.__esModule&&i||{default:i}).default,l=(s=e("helpers/object"),s&&s.__esModule&&s||{default:s}).isObject,u=function(e){this.hot=e};$traceurRuntime.createClass(u,{toVisualRow:function(e){return this.hot.runHooks("unmodifyRow",e)},toVisualColumn:function(e){return this.hot.runHooks("unmodifyCol",e)},toVisual:function(e,t){var n;return n=l(e)?{row:this.toVisualRow(e.row),column:this.toVisualColumn(e.column)}:[this.toVisualRow(e),this.toVisualColumn(t)]},toPhysicalRow:function(e){return this.hot.runHooks("modifyRow",e)},toPhysicalColumn:function(e){return this.hot.runHooks("modifyCol",e)},toPhysical:function(e,t){var n;return n=l(e)?{row:this.toPhysicalRow(e.row),column:this.toPhysicalColumn(e.column)}:[this.toPhysicalRow(e),this.toPhysicalColumn(t)]}},{});var c=new WeakMap,d=new WeakMap;a.utils.RecordTranslator=u,a.utils.RecordTranslatorUtils={registerIdentity:o,getTranslator:r}},{browser:24,"helpers/object":53}],131:[function(e,t,n){"use strict";var o;Object.defineProperties(n,{SamplesGenerator:{get:function(){return g}},__esModule:{value:!0}});var r,i,s,a,l,u,c=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default,d=(i=e("helpers/dom/element"),i&&i.__esModule&&i||{default:i}),h=(d.addClass,d.outerHeight,d.outerWidth,(s=e("helpers/array"),s&&s.__esModule&&s||{default:s}).arrayEach,a=e("helpers/object"),a&&a.__esModule&&a||{default:a}),f=(h.objectEach,h.isObject),p=(l=e("helpers/number"),l&&l.__esModule&&l||{default:l}).rangeEach,m=(u=e("helpers/mixed"),u&&u.__esModule&&u||{default:u}).stringify,g=function(e){this.samples=null,this.dataFactory=e,this.customSampleCount=null,this.allowDuplicates=!1},w=g;$traceurRuntime.createClass(g,(o={},Object.defineProperty(o,"getSampleCount",{value:function(){return this.customSampleCount?this.customSampleCount:w.SAMPLE_COUNT},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"setSampleCount",{value:function(e){this.customSampleCount=e},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"setAllowDuplicates",{value:function(e){this.allowDuplicates=e},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"generateRowSamples",{value:function(e,t){return this.generateSamples("row",t,e)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"generateColumnSamples",{value:function(e,t){return this.generateSamples("col",t,e)},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"generateSamples",{value:function(e,t,n){var o=this,r=new Map;return"number"==typeof n&&(n={from:n,to:n}),p(n.from,n.to,function(n){var i=o.generateSample(e,t,n);r.set(n,i)}),r},configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(o,"generateSample",{value:function(e,t,n){var o,r=this,i=new Map,s=[];return p(t.from,t.to,function(t){var a,l;if("row"===e)l=r.dataFactory(n,t);else{if("col"!==e)throw new Error("Unsupported sample type");l=r.dataFactory(t,n)}o=f(l)?Object.keys(l).length:Array.isArray(l)?l.length:m(l).length,i.has(o)||i.set(o,{needed:r.getSampleCount(),strings:[]});var u=i.get(o);if(u.needed){var c=s.indexOf(l)>-1;if(!c||r.allowDuplicates){var d="row"===e?"col":"row";u.strings.push((a={},Object.defineProperty(a,"value",{value:l,configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(a,d,{value:t,configurable:!0,enumerable:!0,writable:!0}),a)),s.push(l),u.needed--}}}),i},configurable:!0,enumerable:!0,writable:!0}),o),{get SAMPLE_COUNT(){return 3}}),c.utils.SamplesGenerator=g},{browser:24,"helpers/array":43,"helpers/dom/element":47,"helpers/mixed":51,"helpers/number":52,"helpers/object":53}],132:[function(e,t,n){"use strict";function o(e){var t=void 0!==arguments[1]?arguments[1]:u,n=void 0!==arguments[2]?arguments[2]:0,i=void 0!==arguments[3]?arguments[3]:e.length;if(Math.abs(i-n)<=1)return[];var s=Math.ceil((n+i)/2);return o(e,t,n,s),o(e,t,s,i),r(e,t,n,s,i)}function r(e,t,n,o,r){for(var i=new a,s=new a,l=o-n,u=r-o,c=Math.max(l,u),d=r-n,h=0;h<c;h+=1)h<l&&i.push(e[n+h]),h<u&&s.push(e[o+h]);for(var f=0;f<d;)i.first&&s.first?t(i.first.data,s.first.data)>0?e[n+f]=s.shift().data:e[n+f]=i.shift().data:i.first?e[n+f]=i.shift().data:e[n+f]=s.shift().data,f+=1;return e}Object.defineProperties(n,{mergeSort:{get:function(){return o}},__esModule:{value:!0}});var i,s,a=(i=e("../dataStructures/linkedList"),i&&i.__esModule&&i||{default:i}).LinkedList,l=(s=e("browser"),s&&s.__esModule&&s||{default:s}).default,u=function(e,t){var n=e.toString(),o=t.toString();return n===o?0:n<o?-1:1};l.utils.mergeSort=o},{"../dataStructures/linkedList":127,browser:24}],133:[function(e,t,n){"use strict";function o(e,t){var n=e;return function(e){for(var o=!1,r=0,i=e.length;r<i;r++)if(n===e[r]){o=!0;break}t(o)}}var r,i,s=(r=e("browser"),r&&r.__esModule&&r||{default:r}).default;(i=e("helpers/mixed"),i&&i.__esModule&&i||{default:i}).stringify;s.AutocompleteValidator=function(e,t){return null==e&&(e=""),this.allowEmpty&&""===e?void t(!0):void(this.strict&&this.source?"function"==typeof this.source?this.source(e,o(e,t)):o(e,t)(this.source):t(!0))}},{browser:24,"helpers/mixed":51}],134:[function(e,t,n){"use strict";var o,r,i,s,a=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,l=(r=e("moment"),r&&r.__esModule&&r||{default:r}).default,u=(i=e("../helpers/date"),i&&i.__esModule&&i||{default:i}).getNormalizedDate,c=(s=e("editors"),s&&s.__esModule&&s||{default:s}).getEditor;a.DateValidator=function(e,t){var n=!0,o=c("date",this.instance);null==e&&(e="");var r=l(new Date(e)).isValid()||l(e,o.defaultDateFormat).isValid(),i=l(e,this.dateFormat||o.defaultDateFormat,!0).isValid();if(this.allowEmpty&&""===e&&(r=!0,i=!0),r||(n=!1),!r&&i&&(n=!0),r&&!i)if(this.correctFormat===!0){var s=d(e,this.dateFormat),a=this.instance.runHooks("unmodifyRow",this.row),u=this.instance.runHooks("unmodifyCol",this.col);this.instance.setDataAtCell(a,u,s,"dateValidator"),n=!0}else n=!1;t(n)};var d=function(e,t){var n,o=l(u(e)),r=l(e,t),i=e.search(/[A-z]/g)>-1;return n=o.isValid()&&o.format("x")===r.format("x")||!r.isValid()||i?o:r,n.format(t)}},{"../helpers/date":46,browser:24,editors:30,moment:"moment"}],135:[function(e,t,n){"use strict";var o,r=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default;r.NumericValidator=function(e,t){null==e&&(e=""),t(this.allowEmpty&&""===e?!0:""===e?!1:/^-?\d*(\.|\,)?\d*$/.test(e))}},{browser:24}],136:[function(e,t,n){"use strict";var o,r,i=(o=e("browser"),o&&o.__esModule&&o||{default:o}).default,s=(r=e("moment"),r&&r.__esModule&&r||{default:r}).default,a=["YYYY-MM-DDTHH:mm:ss.SSSZ","X","x"];i.TimeValidator=function(e,t){var n=!0,o=this.timeFormat||"h:mm:ss a";null===e&&(e=""),e=/^\d{3,}$/.test(e)?parseInt(e,10):e;var r=/^\d{1,2}$/.test(e);r&&(e+=":00");var i=s(e,a,!0).isValid()?s(e):s(e,o),l=i.isValid(),u=s(e,o,!0).isValid()&&!r;if(this.allowEmpty&&""===e&&(l=!0,u=!0),l||(n=!1),!l&&u&&(n=!0),l&&!u)if(this.correctFormat===!0){var c=i.format(o),d=this.instance.runHooks("unmodifyRow",this.row),h=this.instance.runHooks("unmodifyCol",this.col);this.instance.setDataAtCell(d,h,c,"timeValidator"),n=!0}else n=!1;t(n)}},{browser:24,moment:"moment"}],SheetClip:[function(e,t,n){!function(e){"use strict";function t(e){return e.split('"').length-1}var o={parse:function(e){var n,o,r,i,s,a,l,u=[],c=0;for(r=e.split("\n"),r.length>1&&""===r[r.length-1]&&r.pop(),n=0,o=r.length;n<o;n+=1){for(r[n]=r[n].split("\t"),i=0,s=r[n].length;i<s;i+=1)u[c]||(u[c]=[]),a&&0===i?(l=u[c].length-1,u[c][l]=u[c][l]+"\n"+r[n][0],a&&1&t(r[n][0])&&(a=!1,u[c][l]=u[c][l].substring(0,u[c][l].length-1).replace(/""/g,'"'))):i===s-1&&0===r[n][i].indexOf('"')&&1&t(r[n][i])?(u[c].push(r[n][i].substring(1).replace(/""/g,'"')),a=!0)